Declare @SQL_Link nvarchar(4000),@callEndDate nvarchar(2000),@program varchar(50) 
set @program = 'test' set @SQL_Link = 'Select @callEndDate  = call_end_date  From '+ @program + '..callEndDate' 
print @SQL_Link exec sp_executesql  @SQL_Link ,N'@callEndDate nvarchar(2000) output',@callEndDate select @callEndDate

解决方案 »

  1.   

    'Select  '+@callEndDate+' = (Select  call_end_date  From '+ @program + '..callEndDate)' 都“=”赋值了  还能有结果啊 
      

  2.   

    create table test(call_end_date varchar(10))
    insert into test select 'test'
    go
    Declare @SQL_Link nvarchar(4000),@callEndDate nvarchar(2000),@program varchar(50) 
    set @program = 'test' 
    set @callEndDate = 'col'set @SQL_Link = 'Select  '+@callEndDate+' = (Select  call_end_date  From '+ @program + ')' 
    --print @SQL_Link exec sp_executesql  @SQL_Link 
    /*
    col
    ----------
    test(1 行受影响)
    */
    drop table test
      

  3.   

    我的目的就是让Select  call_end_date  From '+ @program + '..callEndDate的结果赋给@callEndDate。2楼的结果出不来,和我另外一种做法比较相像。先谢谢了!
      

  4.   


    DECLARE @i int
    SELECT @i = (SELECT COUNT(1) FROM sys.objects)
    --如果只到这里,那么这个语句只是给@i赋值而已,如果你想显示@i的值,还需要加上下面的语句,同理
    SELECT @i
      

  5.   

    运行:Select  call_end_date  From test..callEndDate有结果吗?
      

  6.   

    执行的output是什么?
    你那个语句只是给那个变量赋值。
    你问题里的那段SQL,结果肯定是没有任何Output的。
      

  7.   

    我原来的本意是给那个变量赋值,然后另外的地方要使用这个变量。不过后来,换了一种思路,放弃了这种做法,结果成功了。
    这里特别感谢lzhs和happyflystone。当然也谢谢其他的朋友。