【发布时间】:2014-05-23 21:54:29
【问题描述】:
我需要在 SQL Server 2008 上运行一个存储过程。
但是,我只能从游标中获取一行。之后,@@FETCH_STATUS 为 -1。
DECLARE @my_table TABLE
(
id int not null
);
INSERT INTO @my_table (id)
SELECT DISTINCT a.id
FROM table1 as a
WHERE a.value = 'abc'
ORDER BY a.id ASC
DECLARE t_input CURSOR FOR
SELECT id
FROM @my_table
DECLARE @return_value tinyint
DECLARE @my_id int
OPEN t_input
FETCH NEXT FROM t_input into @my_id # only the first row is fetched successfully
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC @return_value = my_procudure
@arg1 = @my_id,
@ar2 = 9
SELECT 'Return Value' = @return_value
FETCH NEXT FROM t_input into @my_id # this is -1 !!!!!!!!!!
END
因此,它只在 while 循环中运行一次迭代。
my_procudure 运行良好,与光标无关。
在调试模式下,我看到循环只运行了一次。
任何帮助将不胜感激。
【问题讨论】:
-
而@my_id 用于什么?你用常量值调用你的过程,对吧?还是
6和9应该是参数? -
@NickyvV,我改了,一个错字。谢谢!
-
@my_table 中有多少条记录?
-
哦,在您的游标声明中,您正在选择 id,但@my_table 中没有名为“id”的列。
-
@Chris J. Breisch,我已经改变了它,但同样的错误!谢谢!
标签: sql sql-server sql-server-2008