1 create procedure xx1
2 @Fcltable  char(10),
3 @pzhm1    char(10),
4 @rq       char(10)
5 declare @cltable2 char(10)
6 select @cltable2=@Fcltable
7 insert into (cltable2) (pzhm,rq) values (@pzhm1,@rq)想请问高手:
1 第6行的写法可不可行? 我只是想把变量值给@CLTABLE2
2 第7行出错,该如何写?即当表不定时,可不可以变量代替?

解决方案 »

  1.   


    1 第6行的写法可不可行? 我只是想把变量值给@CLTABLE2
    select @cltable2 = @fcltable 或 set @cltable2 = @fcltable2 第7行出错,该如何写?即当表不定时,可不可以变量代替?
    insert into cltable2(pzhm,rq)
    select @pzhm1,@rq
      

  2.   

    6
    没有问题7
    --try
    insert into cltable2 (pzhm,rq) values (@pzhm1,@rq)
    表不定不可以直接用变量,但是可以用动态语句提交给exec执行
      

  3.   

    第六行没错第7行:insert into cltable2(pzhm,rq) values(@pzhm1,@rq)
      

  4.   

    执行insert into cltable2 (pzhm,rq) values (@pzhm1,@rq)时出现
    "对象名'cltable2'无效"的错误
      

  5.   

    insert into cltable2 (pzhm,rq) values (@pzhm1,@rq)
    表不定不可以直接用变量,但是可以用动态语句提交给exec执行-----具体是在哪执行?
      

  6.   

    第六行没错.第七行这样写试试
    insert into cltable2 (pzhm,rq) values (@pzhm1,@rq)
    如果这样也出错,原因可能是
    1,表cltable2不存在
    2,从你的语句看,@pzhm1,@rq这两个变量都未赋过值,此时都为NULL,如果表定义时设置pzhm,rq字段均not null,则也会报错
    3,字段类型不一至,或字段值超出字段定义长度.如果表名用变量:declare @tb varchar(20)
    exec ('insert ' + @tb + '(pzhm,rq) values(''' + @pzhm1 + ''',''' + @rq + ''')')
      

  7.   

    fcuandy(要学的东西还很多) 正解!先将你的所有变量平成一个字符串,print出来看一下,语法是否正确。如果正确然后用exec运行就可以了