为啥我不能在 SQL 中创建游标?

Posted

技术标签:

【中文标题】为啥我不能在 SQL 中创建游标?【英文标题】:Why I can't create a cursor in SQL?为什么我不能在 SQL 中创建游标? 【发布时间】:2020-05-21 10:54:25 【问题描述】:

在整个互联网上搜索用于在 sql 中创建游标的正确语法。 从这里开始:

DECLARE cursorName CURSOR FOR
SELECT Name
FROM Student;

continue with this: BEGIN
DECLARE cursorNume CURSOR FOR
SELECT Nume
FROM Student;
END;

仍然是错误。我正在使用 Datagrip。 谁能帮帮我?

【问题讨论】:

您使用的是哪种 DBMS 产品? 到目前为止,您已经声明了光标。现在您必须打开并迭代,并且在该迭代中,您可以进行操作。最后你必须关闭它 【参考方案1】:

https://www.sqlservertutorial.net/sql-server-stored-procedures/sql-server-cursor/

此链接提供了在数据库中使用游标的步骤,解释了所涉及的所有小步骤。以下是我的做法:

DECLARE
@current_transaction_id bigint;
    
DECLARE 
cursor_for_transactionIds CURSOR FOR SELECT ProfileId FROM EHR.Profiles;
    
OPEN cursor_for_transactionIds; 
FETCH NEXT FROM cursor_for_transactionIds INTO @current_transaction_id;

WHILE @@FETCH_STATUS = 0 
BEGIN 

PRINT @current_transaction_id 
    
FETCH NEXT FROM cursor_for_transactionIds into @current_transaction_id; 
END;

CLOSE cursor_for_transactionIds; 
DEALLOCATE cursor_for_transactionIds;

虽然问这个问题已经很久了。为将来遇到相同问题的人分享问题的解决方案。这就是您提出这个问题的原因。

【讨论】:

以上是关于为啥我不能在 SQL 中创建游标?的主要内容,如果未能解决你的问题,请参考以下文章

sql server 的游标

为啥 CTE 比游标/派生表/子查询/临时表等更好?

Pl/Sql 在for循环中打开游标

尝试打开游标时忽略 SQL 语句

为啥人们如此讨厌 SQL 游标? [关闭]

sql问题,首先是快照,为啥不能恢复,然后是如何删除触发器(我指的是用命令),再就是游标和索引有何区