定义游标时使用动态SQL
2010-11-27 11:51
369 查看
在定义游标时,我们一般是这样定义的:
DECLARE cur CURSOR FOR SELECT * FROM tableName
OPEN cur
FETCH NEXT FROM cur
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM cur
END
CLOSE cur
DEALLOCATE cur
但是有时候需要用到动态SQL,一般情况下我们想到的方法是:
DECLARE @sql nvarchar(1000)
SET @sql='SELECT * FROM tableName '
DECLARE cur CURSOR FOR
EXECUTE sp_executesql @sql
OPEN cur
FETCH NEXT FROM cur
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM cur
END
CLOSE cur
DEALLOCATE cur
但是这种写法是错误的,正确的应该是:
DECLARE @sql nvarchar(1000)
SET @sql='DECLARE cur CURSOR FOR SELECT * FROM tableName'
EXECUTE sp_executesql @sql
OPEN cur
FETCH NEXT FROM cur
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM cur
END
CLOSE cur
DEALLOCATE cur
我遇到了这个问题,通过搜索解决了问题,现在写出来与大家分享,我也是学人家的。
DECLARE cur CURSOR FOR SELECT * FROM tableName
OPEN cur
FETCH NEXT FROM cur
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM cur
END
CLOSE cur
DEALLOCATE cur
但是有时候需要用到动态SQL,一般情况下我们想到的方法是:
DECLARE @sql nvarchar(1000)
SET @sql='SELECT * FROM tableName '
DECLARE cur CURSOR FOR
EXECUTE sp_executesql @sql
OPEN cur
FETCH NEXT FROM cur
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM cur
END
CLOSE cur
DEALLOCATE cur
但是这种写法是错误的,正确的应该是:
DECLARE @sql nvarchar(1000)
SET @sql='DECLARE cur CURSOR FOR SELECT * FROM tableName'
EXECUTE sp_executesql @sql
OPEN cur
FETCH NEXT FROM cur
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM cur
END
CLOSE cur
DEALLOCATE cur
我遇到了这个问题,通过搜索解决了问题,现在写出来与大家分享,我也是学人家的。
相关文章推荐
- 【原创】定义游标时使用动态SQL语句
- 如何在定义游标的时候使用动态sql语句?
- 如何在定义游标的时候使用动态sql语句?
- 如何在定义游标的时候使用动态sql语句
- 游标变量、动态sql及变量绑定的使用
- oracle pl/sql 入门+ 数组使用+游标+动态SQL
- sql 游标的定义与使用
- ORACLE动态游标及动态SQL使用实例
- 删除所有的用户表,存储过程,游标的应用,动态SQL的使用
- 在PL/SQL使用游标获取数据及动态SQL
- oracle存储过程定义游标用动态sql
- 使用DBMS_SQL实现动态sql游标
- function中使用动态sql和游标
- sql中游标的定义和使用
- 数据库中序列、视图、游标、包、动态SQL的使用
- MS-SQL 动态sql使用游标
- 在PL/SQL中使用游标、动态sql和绑定变量的小例子
- oracle函数返回结果集(动态查询Sql并定义游标)
- Sql Server游标使用 exec函数执行动态sql
- 游标使用 和sp_executesql动态sql