我正在Sql Server 2008中构建存储过程。存储过程有两个参数,它们是表的列名。在存储过程中,我使用动态查询在Cursor的帮助下获取这两列的数据。
代码:
Create PROCEDURE TestSP
(
@firstAttribute nvarchar(max),
@secondAttribute nvarchar(max)
)
AS
DECLARE @x FLOAT
DECLARE @y INT
DECLARE @query nvarchar(max)
DECLARE @cursor_query nvarchar(max)
DECLARE @result_Cursor as cursor
BEGIN
SET @query = 'Select '+ @firstAttribute+','+@secondAttribute+' from TBL_TEST_DATA_NEW'
SET @cursor_query =' set @cursor = cursor for ' + @query +' open @cursor;'
PRINT 'CURSOR_QUERY'+@cursor_query
exec sys.sp_executesql
@cursor_query
,N'@cursor cursor output'
,@result_Cursor output
FETCH NEXT FROM result_Cursor INTO @x, @y
但是当我执行此SP时,它会给我以下错误
Msg 16916, Level 16, State 1, Procedure TestSP, Line 33
A cursor with the name 'result_Cursor' does not exist.
执行命令:
Exec TestSP "Column_1","Column_2"
有人能告诉我为什么会收到此错误
请帮助..
由于
答案 0 :(得分:1)
错误是说Cursor不存在。你不能以“设置光标”开头。游标名称也没有@。
所以尝试使用
declare cursorNameHere cursor for SELECT ...
open cursorNameHere
答案 1 :(得分:1)
答案 2 :(得分:0)
更改
PRINT 'CURSOR_QUERY'+@cursor_query
到
PRINT 'CURSOR_QUERY '+@cursor_query