+ -
当前位置:首页 → 问答吧 → 请各位看看这个存储过程!总是报错

请各位看看这个存储过程!总是报错

时间:2011-11-30

来源:互联网

SQL code

ALTER PROCEDURE [dbo].[表名] 

@uid        int ,
@userid        int,
@timedate varchar (100)    

AS
BEGIN
    SET NOCOUNT ON;
    if exists ( select * from sysobjects where id = object_id(N'@timedate') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
        begin
        INSERT INTO @timedate (uid,userid) VALUES(@uid,@userid)
        end
    else
        begin
        select * into @timedate from Useraction1111 where 1=0
        INSERT INTO @timedate(uid,userid) VALUES (@uid,@userid)
        end
    
    select @@ERROR as ErrorId 
END




要做一个自动创建表的存储过程,@timedate这个是传进去的表名。
要先判断有没有这个表,有的话就不创建,直接添加数据。
没有的话就先创建表,在添加数据。
你给位老大多指点啊!

作者: justin161   发布时间: 2011-11-30

表名或者字段名为变量的时候 用动态SQL

作者: fredrickhu   发布时间: 2011-11-30

拼字符串。exec执行

作者: ssp2009   发布时间: 2011-11-30

SQL code

ALTER PROCEDURE [dbo].[表名] 

@uid        int ,
@userid        int,
@timedate varchar (100)    

AS
BEGIN
    SET NOCOUNT ON;
    if exists ( select * from sysobjects where id = object_id(@timedate) and OBJECTPROPERTY(id, N'IsUserTable') = 1)
        begin
        EXEC('INSERT INTO '+@timedate+'( (uid,userid) VALUES('+@uid+','+@userid+')')
        end
    else
        begin
        EXEC('select * into '+@timedate+' from Useraction1111 where 1=0;')
        EXEC('INSERT INTO '+@timedate+'(uid,userid) VALUES ('+@uid+','+@userid')')
        end
    
    select @@ERROR as ErrorId 
END



作者: roy_88   发布时间: 2011-11-30

引用 3 楼 roy_88 的回复:
SQL code

ALTER PROCEDURE [dbo].[表名]

@uid int ,
@userid int,
@timedate varchar (100)

AS
BEGIN
SET NOCOUNT ON;
if exists ( select * from sysobjects where id = ob……

还是报错!在请帮忙看看!谢谢

作者: justin161   发布时间: 2011-11-30

少了個"+"號
SQL code
CREATE PROCEDURE [dbo].[表名] 
@uid        int ,
@userid        int,
@timedate varchar (100)    

AS
BEGIN
    SET NOCOUNT ON;
    if exists ( select * from sysobjects where id = object_id(@timedate) and OBJECTPROPERTY(id, N'IsUserTable') = 1)
        begin
        EXEC('INSERT INTO '+@timedate+'( (uid,userid) VALUES('+@uid+','+@userid+')')
        end
    else
        begin
        EXEC('select * into '+@timedate+' from Useraction1111 where 1=0;')
        EXEC('INSERT INTO '+@timedate+'(uid,userid) VALUES ('+@uid+','+@userid+')')
        end
    
    select @@ERROR as ErrorId 
END

作者: roy_88   发布时间: 2011-11-30