存储过程中,要用到游标的话是不是不可以用EXECUTE执行SQL语句,帮我看一下源代码!

z_xuhui 2001-11-14 09:16:52
DECLARE @SQL_STR VARCHAR(100)
SELECT @SQL_STR='UNIT_CODE=13 AND UNIT=34' //@SQL_STR主要存复杂的SQL语句

DECLARE FORM_LIST_REL_CURSOR CURSOR FOR
EXECUTE ('SELECT UNIT_NAME FROM UNIT_REL WHERE ' + SQL_STR) //在这里利用execute执行SQL语句提示execute执行错误
//SELECT G_UNIT_NAME FROM TABLE1 WHERE ENTRY_ID='12345' //如果直接运行的话是没问题的
OPEN FORM_LIST_REL_CURSOR //是不是要用到游标的话,不可以用EXECUTE执行SQL语句
FETCH NEXT FROM FORM_LIST_REL_CURSOR INTO @G_UNIT_NAME
WHILE @@FETCH_STATUS = 0
BEGIN
.........
.........
FETCH NEXT FROM FORM_LIST_REL_CURSOR INTO @G_UNIT_NAME
END
CLOSE FORM_LIST_REL_CURSOR
DEALLOCATE FORM_LIST_REL_CURSOR
...全文
136 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
z_xuhui 2001-11-14
  • 打赏
  • 举报
回复
分数已送出,但问题仍未全部解决,我加继续派分,望高手指教!
z_xuhui 2001-11-14
  • 打赏
  • 举报
回复
N_chow(一劍飄香):这样问题倒可以解决,但我觉得有点麻烦,稳定性降低了。----先给你加5分
z_xuhui 2001-11-14
  • 打赏
  • 举报
回复
N_chow(一劍飄香):这样问题倒可以解决,但我觉得有点麻烦,稳定性降低了。----先给你加5分
Rewiah 2001-11-14
  • 打赏
  • 举报
回复
不行就没办法了,我初学的,多多关照!
z_xuhui 2001-11-14
  • 打赏
  • 举报
回复
Rewiah(乘长风):不行,因为我里面有好多字符串连接的语句,执行不了。
N_chow 2001-11-14
  • 打赏
  • 举报
回复
這肯定不行啦。
要不你改用temp table或table變量吧。先把Execute @sql_str的結果插到temp table中,然後再Declare Cursor吧。
z_xuhui 2001-11-14
  • 打赏
  • 举报
回复
我先看一下,OK的话,小弟定会给你加分!
Rewiah 2001-11-14
  • 打赏
  • 举报
回复
哎哟,你的程序原来怎么这么多错误!

DECLARE @SQL_STR VARCHAR(100)
SELECT @SQL_STR='UNIT_CODE=13 AND UNIT=34' //@SQL_STR主要存复杂的SQL语句

EXECUTE ("
DECLARE FORM_LIST_REL_CURSOR CURSOR FOR
SELECT UNIT_NAME FROM UNIT_REL WHERE " + @SQL_STR + "

DECLARE @G_UNIT_NAME CHAR(30)

OPEN FORM_LIST_REL_CURSOR
FETCH NEXT FROM FORM_LIST_REL_CURSOR INTO @G_UNIT_NAME
WHILE @@FETCH_STATUS = 0
BEGIN
.........
.........
FETCH NEXT FROM FORM_LIST_REL_CURSOR INTO @G_UNIT_NAME
END
CLOSE FORM_LIST_REL_CURSOR
DEALLOCATE FORM_LIST_REL_CURSOR

")

现在好象对了!
Rewiah 2001-11-14
  • 打赏
  • 举报
回复
那样不行呀!

DECLARE @SQL_STR VARCHAR(100)
SELECT @SQL_STR='UNIT_CODE=13 AND UNIT=34' //@SQL_STR主要存复杂的SQL语句

EXECUTE ("
DECLARE FORM_LIST_REL_CURSOR CURSOR FOR
SELECT UNIT_NAME FROM UNIT_REL WHERE " + @SQL_STR + "

OPEN FORM_LIST_REL_CURSOR
FETCH NEXT FROM FORM_LIST_REL_CURSOR INTO @G_UNIT_NAME
WHILE @@FETCH_STATUS = 0
BEGIN
.........
.........
FETCH NEXT FROM FORM_LIST_REL_CURSOR INTO @G_UNIT_NAME
END
CLOSE FORM_LIST_REL_CURSOR
DEALLOCATE FORM_LIST_REL_CURSOR

")

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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