这个EXEC()执行的语句里面对临时变量,临时表之类的都无效,跑出了EXEC()这个范围系统就识别不出来了,外面的变量在里面也识别不出来,,郁闷

解决方案 »

  1.   

    select @sCrmstr='select @scardno=scardno,nmoney from '+@sCrm+'..kcardaccount where sCustomer_c='+@sCustomer_c
    exec sp_executesql @sCrmstr,N@scardno varchar(1000) out  --类似这样,用sp_executesql
      

  2.   

    declare @scardno nvarchar(50),@nmoney nvarchar(50)
    declare @sCrmstr nvarchar(4000)
    declare @sCrm nvarchar(250),@sCustomer_c nvarchar(50)
    select @sCrmstr='select @scardno=scardno,nmoney from '+@sCrm+'..kcardaccount where sCustomer_c='+@sCustomer_c
    exec sp_executesql @sCrmstr,N'@scardnoint output',@scardno output 
    select @scardno
      

  3.   

    exec sp_executesql @sql  ,N@scardno varchar(1000) out  ,@scardno out--这样
      

  4.   

    改一下:
    select @sCrmstr='select scardno,nmoney from '''+@sCrm+'''..kcardaccount where sCustomer_c='''+@sCustomer_c+''''
    exec (@sCrmstr)
    加''''就行,
      

  5.   

    第一个变量就表名加多一个[dbo]select @sCrmstr='select scardno,nmoney from '+@sCrm+'.dbo.kcardaccount where sCustomer_c='''+@sCustomer_c+''''--在这里加''''
    exec (@sCrmstr)
      

  6.   

    select @sCrmstr='select @CardNo=scardno,@nMoneyLeave=nMoney from '+@sCrm+'..kcardaccount where sCustomer_c='+@sCustomer_c
     exec sp_executesql @sCrmstr,N'@CardNo nvarchar(20) output,@nMoneyLeave numeric(12,2) output',@CardNo output,@nMoneyLeave output
    这样就OK了,呵呵