解决方案 »

  1.   

    --我猜是要分成两个declare
    declare @sql varchar(10240)
    declare @yy varchar(200)
      

  2.   

    看错了,1楼作废。
    具体你要查下 exec 的帮助,如何才能吧结果返回到外部变量中。
      

  3.   

    varchar的最大长度为8000declare @sql varchar(8000)
    select @sql='declare @yy varchar(200) select @yy=qymc from qyxxb where qybh=''11'''
    exec(@sql)
      

  4.   

    select @sql='select @yyqymc from qyxxb where qybh=''11'''
    这是全角
    然后sybase15不清楚,MSSQL 动态执行SQL时 里面的变量要自己定义或传入ouput 变量
    最后,MSSQL 貌似varchar最长8000
      

  5.   

    调用问题。你用动态SQL 调用他,前面的声明已经超出他的作用域了。动态语句里面的变量要在调用语句里面声明
    declare @sql varchar(max)
    select @sql='declare @yy varchar(200)    select @yy=qymc from qyxxb where qybh=''11'''
    exec(@sql)这样就OK 了。
      

  6.   


    你要把结果返回外部变量中吗?
    用SP_executesql
    -- 注意这里的@sql 比较定义为NVARCHAR
    declare @sql nvarchar(max),  @yy varchar(200) 
    select @sql=' select @yy=qymc from aagyxb where gybh=''11'' '
    exec sp_executesql @sql,N'@yy varchar(20) output', @yy output
    print @yy
      

  7.   


    你要把结果返回外部变量中吗?
    用SP_executesql
    -- 注意这里的@sql 比较定义为NVARCHAR
    declare @sql nvarchar(max),  @yy varchar(200) 
    select @sql=' select @yy=qymc from aagyxb where gybh=''11'' '
    exec sp_executesql @sql,N'@yy varchar(20) output', @yy output
    print @yy

    sybase上面是没有这个sp_executesql 存储过程的