拼sql
declare @flag1 varchar(1000),
declare @fkc varchar(10) 在这里赋值 set @flag1='
 select '''+@fkc+'''=objjc from '+@dbname+'..WFPCODE_AD504 where objname=''负库存是否显示''
 '然后下面根据@fkc的值进行判断if @fkc=1
  begin
       set @sql=@sql+''
  end
else
  begin
       set @sql=@sql+'  省略       '
  end但是@fkc 始终是null
怎么办

解决方案 »

  1.   

    给你定义的变量赋初值,不然字符串拼接出来都是NULL。
      

  2.   


    declare @flag1 nvarchar(1000),
    declare @fkc varchar(10)  --在这里赋值 
    set @flag1=N'select @fkc=objjc from '+@dbname+'..WFPCODE_AD504 where objname=''负库存是否显示'''exec sp_executesql @flag1,'@fkc varchar(10) output',@fkc output--你的判断语句
      

  3.   

    try:
    declare @flag1 nvarchar(1000),
    declare @fkc nvarchar(10)  set @flag1='
     select @fkc=objjc from '+@dbname+'..WFPCODE_AD504 where objname=''负库存是否显示''
     '
    exec sp_executesql @flag1,N'@fkc nvarchar(10) output',@fkc outputselect @fkc
      

  4.   

    ---参考:
    输出参数 
    declare @num int, @sqls nvarchar(4000) 
    set @sqls='select count(*) from tableName' 
    exec(@sqls) --如何将exec执行结果放入变量中? declare @num int, @sqls nvarchar(4000) 
    set @sqls='select @a=count(*) from tableName ' 
    exec sp_executesql @sqls,N'@a int output',@num output 
    select @num 
      

  5.   

    过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@statement'。
      

  6.   

    把变量定义改成nvarchar类型的,见4楼.
    进一步可以将赋值语句的字符串前加一个N:
    set @flag1=N'
     select @fkc=objjc from '+@dbname+'..WFPCODE_AD504 where objname=''负库存是否显示''
     '
      

  7.   

    if @fkc is null--这个判断null值 
      

  8.   


    declare @fkc varchar(10)
    exec sp_executesql N'select @fkcout=objjc from '+@dbname+N'..WFPCODE_AD504 where objname=''负库存是否显示''',N'@fkcout varchar(10) output',@fckout=@fkc output
    print @fkcout
      

  9.   

    declare @fkc varchar(10) 
    然后
    set @fkc=''
      

  10.   


    null和任何字符串相加都是null