declare @sql varchar(10240),@yy varchar(200)
select @sql='select @yy=qymc from qyxxb where qybh=''11'''
exec(@sql)
提示must declare variable @yy
在sybase15上是可以执行,老版本12.5的不行,请各位前辈有没有什么办法,先谢谢了
------解决思路----------------------
看错了,1楼作废。
具体你要查下 exec 的帮助,如何才能吧结果返回到外部变量中。
------解决思路----------------------
varchar的最大长度为8000
declare @sql varchar(8000)
select @sql='declare @yy varchar(200) select @yy=qymc from qyxxb where qybh=''11'''
exec(@sql)
------解决思路----------------------
select @sql='select @yy=qymc from qyxxb where qybh=''11'''
这是全角
然后sybase15不清楚,MSSQL 动态执行SQL时 里面的变量要自己定义或传入ouput 变量
最后,MSSQL 貌似varchar最长8000
------解决思路----------------------
调用问题。你用动态SQL 调用他,前面的声明已经超出他的作用域了。动态语句里面的变量要在调用语句里面声明
declare @sql varchar(max)
select @sql='declare @yy varchar(200) select @yy=qymc from qyxxb where qybh=''11'''
exec(@sql)
这样就OK 了。
------解决思路----------------------
你要把结果返回外部变量中吗?
用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