create proc P_indefrom 
{
@from1 varchar(20),
@from2 varchar(20),
@num int
}
as
declare @id int
INSERT into @from2 SELECT 
       top @num UserName,Sex,moble,phone,city,cardtype,address,funds,
       funds2,credential,credit,notes,comefrom,creat_Time,Status FROM @from1 --指定列,如果结构不同的话,没有表的话可以插入INTO
    DECLARE FMyCursor CURSOR FOR SELECT id FROM @from1
OPEN FMyCursor
    FETCH NEXT FROM FMyCursor INTO @id
WHILE @@FETCH_STATUS = 0
begin
  delete from @from1 where id=@id
  FETCH NEXT FROM FMyCursor INTO @id
end
CLOSE FMyCursor
DEALLOCATE FMyCursor
go老是暴
消息 102,级别 15,状态 1,过程 P_indefrom,第 2 行
'{' 附近有语法错误。
消息 1087,级别 15,状态 2,过程 P_indefrom,第 9 行
必须声明表变量 "@from2"。
消息 1087,级别 15,状态 2,过程 P_indefrom,第 12 行
必须声明表变量 "@from1"。
消息 1087,级别 15,状态 2,过程 P_indefrom,第 17 行
必须声明表变量 "@from1"。
不知道咋解决了,求助……

解决方案 »

  1.   

    create proc P_indefrom 
    (
    @from1 varchar(20),
    @from2 varchar(20),
    @num int
    )
    as
      

  2.   

    create proc P_indefrom 
    (
    @from1 varchar(20),
    @from2 varchar(20),
    @num int
    )是括号不是中括号
      

  3.   

    INSERT into @from2 SELECT 传进来的参数自己用EXEC 执行,动态拼接
      

  4.   

    create proc P_indefrom 
    (
    @from1 varchar(20),
    @from2 varchar(20),
    @num int
    )
    as
        declare @id INT
        DECLARE @sql varchar(100)
        exec('INSERT into '+@from2+' SELECT 
           top @num UserName,Sex,moble,phone,city,cardtype,address,funds,
           funds2,credential,credit,notes,comefrom,creat_Time,Status FROM '+@from1) --指定列,如果结构不同的话,没有表的话可以插入INTO
        exec('DECLARE FMyCursor CURSOR FOR SELECT id FROM '+@from1)
        OPEN FMyCursor
        FETCH NEXT FROM FMyCursor INTO @id
        WHILE @@FETCH_STATUS = 0
        BEGIN
          SET @sql='delete from '+@from1+' where id='+ltrim(@id)
          exec(@sql)
          FETCH NEXT FROM FMyCursor INTO @id
        end
        CLOSE FMyCursor
        DEALLOCATE FMyCursor
    go
      

  5.   


    INSERT into @from2 SELECT 拼接吧,这地方也有问题...
      

  6.   

    set @sql='INSERT into '+@from2+' SELECT top '+ltrim(@num)+' UserName,Sex,moble,phone,city,cardtype,address,funds,
           funds2,credential,credit,notes,comefrom,creat_Time,Status FROM '+@from1
    exec(@sql)