declare @ddd varchar(12)
declare @sss varchar(50)
set @ddd='a'
set @sss='select @ddd'
exec(@sss)
如何将参数 @ddd的值传给@sss

解决方案 »

  1.   

    declare @ddd varchar(12)
    declare @sss varchar(50)
    set @ddd='a'SELECT @sss=@dddSELECT @sss
      

  2.   

     create procedure repo
    (@ddd varchar(12)=''
     )
    as declare @sss varchar(50)
    set @sss='select *from table1 where cname=@ddd'
    exec(@sss)
      

  3.   

    create procedure repo
    (@ddd varchar(12)=''
     )
    as  
    declare @sss varchar(50)
    set @sss='select *from table1 where cname='''+@ddd+''''
    exec(@sss)go
      

  4.   

    declare @ddd varchar(12)
    declare @sss varchar(50)
    set @ddd='a'
    set @sss='select * from tablename where contition='+ @ddd
    exec(@sss)
      

  5.   

    楼主你那样写不是把@ddd当做变量传入了, 而假设@ddd=ace 
    那么那语句就是select * from table where cname='ace'
    所以
    set @sss='select *from table1 where cname='''+@ddd+''''
    在cname 后面第一个单引号是转义符,意识说在它后面的单引号以字符串形式输出,后面的那个引号是字符串结束引号。同理@ddd后面的第一个是字符串开始符,第二个是转义,第三个是引号字符串,第四个是字符换结束符