Sql server Microsoft SQL Server-光标错误

Sql server Microsoft SQL Server-光标错误,sql-server,Sql Server,我正在尝试编写一个脚本,该脚本使用AP数据库来声明并为下面的select语句使用游标。我还必须使用WHILE循环来获取结果集中的每一行,并省略INTO子句来直接获取结果选项卡 SELECT VendorName, AVG (Invoice Total) AS InvoiceAvg FROM Vendors JOIN Invoices ON Vendors. VendorID = Invoices. VendorID GROUP BY VendorName; 当我运行我在下面创建的脚本时,

我正在尝试编写一个脚本,该脚本使用AP数据库来声明并为下面的select语句使用游标。我还必须使用WHILE循环来获取结果集中的每一行,并省略INTO子句来直接获取结果选项卡

SELECT VendorName, AVG (Invoice Total) AS InvoiceAvg 
FROM Vendors JOIN Invoices 
 ON Vendors. VendorID = Invoices. VendorID
GROUP BY VendorName;
当我运行我在下面创建的脚本时,我不断地得到许多关于错误语法的错误

USE AP;
GO

DECLARE
    CURSOR cursor1 is
        SELECT VendorName, AVG(InvoiceTotal) AS InvoiceAvg
        FROM Vendors JOIN Invoices
        ON Vendors.VendorID = Invoices.VendorID
        GROUP BY VendorName;
BEGIN
    WHILE rs IN cursor1
        LOOP
            Dbms_output.put_line('Name=' || rs.LastName || ',Average=' || rs.AVG);
        END LOOP;
END;
以下是我遇到的错误

Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'CURSOR'.
Msg 102, Level 15, State 1, Line 11
Incorrect syntax near 'cursor1'.
Msg 102, Level 15, State 1, Line 14
Incorrect syntax near 'LOOP'.

如何使代码正确运行而不出现任何错误?

SQL Server不使用
Dbms\u输出,Oracle使用。不过,您的错误看起来像SQL。请确认这不是Oracle…为什么不直接运行查询?为什么要逐行输出?不管怎样,我建议您使用google
t-sql游标示例
是否尝试在sql Server上运行Oracle PL/sql代码?您在这里实际想要实现什么?基于循环的方法在RDBMS中不起作用,应该使用基于集合的操作。在这里解释您的真正目标。虽然我们可以更正您的脚本,使用T-SQL语法和
PRINT
语句,而不是Oracle PL/SQL和T-SQL的混合,但我同意@Larnu的观点,最好解释您的实际用例。这只是为了学习T-SQL吗?对于Microsoft SQL Server,通常直接将数据作为流结果集返回,而不是作为文本输出消息返回,并且避免使用服务器端游标。