在存储过程中,动态执行SQL并且将该SQL查询结果赋值给变量的问题

magicsnake 2004-12-14 01:12:33
我有一个存储过程
create proc test_proc
@result integer output
as
declare @ret_count integer
declare @sql_str varchar(255)
select @sql_str="select count(*) from testtable"
exec (@sql_str) --问题在这里,我怎样将count(*)的结果赋值给ret_count
select @result=@ret_count

上面我将sql语句写成
select @sql_str="select @ret_count=count(*) from testtable"
exec (@sql_str)
变量@ret_count还是得不到值,这种动态构造的sql语句如何赋值?
...全文
596 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
magicsnake 2004-12-20
  • 打赏
  • 举报
回复
那么意思就是动态SQL没法给变量赋值了?
hobbylu 2004-12-17
  • 打赏
  • 举报
回复
execute(SQLSTRING)
这个语句不支持语句里面有动态变量
以下是语法
exec[ute] ("string" | char_variable
[+ "string" | char_variable]...)
如果象你的语句执行的话,他的报错信息是
137 : 0 : Number (137) Severity (15) State (1) Must declare variable '@ret_count.
july 2004-12-16
  • 打赏
  • 举报
回复
这个问题我也等,麻烦啊,楼上的,麻烦你清楚,就是因为必须使用动态语句,否则谁变态阿,简单的例子只是为了说明问题
xujin_programmer 2004-12-15
  • 打赏
  • 举报
回复
直接写 select @sql_str = count(*) from testtable
magicsnake 2004-12-14
  • 打赏
  • 举报
回复
支持啊
select @sql_str="select count(*) from testtable"
exec (@sql_str)
完全可以执行
只是不知道怎么将值赋给变量
wshcdr 2004-12-14
  • 打赏
  • 举报
回复
SYBASE好象不支持动态SQL的

2,596

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧