我想引用#temptable 的第n 行(在下面的第二个SQL 注释处)。什么表达式可以让我这样做?
DECLARE @counter INT
SET @counter = 0
WHILE (@counter<count(#temptable))
--#temptable has one column and 0 or more rows
BEGIN
DECLARE @variab INT
EXEC @variab = get_next_ticket 3906, 'n', 1
INSERT INTO Student_Course_List
SELECT @student_id,
-- nth result set row in #temptable, where n is @count+1
@variab
SET @counter = @counter +1
END
光标(这行得通吗?):
for record in (select id from #temptable) loop
--For statements, use record.id
end loop;
最佳答案
通常在 SQL Server 这样的关系数据库中,您更喜欢进行集合操作。因此,即使是非常复杂的查询,最好也只使用 INSERT INTO tbl SOMECOMPLEXQUERY
。这比行处理要好得多。在复杂的系统中,使用游标应该是比较少见的。
在您的情况下,get_next_ticket
过程似乎执行了一些无法以面向集合的方式完成的重要逻辑。如果您不能以另一种面向集合的方式执行它的功能,那么您可以使用 CURSOR
.
您可以在您的集合上声明一个CURSOR
SELECT whatever FROM #temptable
,OPEN
它,FETCH
从游标到每列的变量,然后在插入中使用它们。
关于sql - 在 T-SQL/SQL Server 2000 中,引用结果集中的特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7112656/