首页 > 解决方案 > 我如何使用光标编写带有连接的选择

问题描述

我有以下代码:

SELECT 
    Przedmiot, COUNT(Ocena) 'wystawiono n ocen'
FROM
    Przedmiot
JOIN
    ocena ON przedmiot.IdPrzedmiot = Ocena.IdPrzedmiot
GROUP BY
    Przedmiot

如何使用 T-SQL 游标运行它?

这是我到目前为止所拥有的,但它会打印同一行几次:(

DECLARE db_cursor CURSOR FOR 
        SELECT Przedmiot, COUNT(Ocena) 'wystawiono n ocen'
        from Przedmiot
        join ocena 
        on przedmiot.IdPrzedmiot = Ocena.IdPrzedmiot
        group by Przedmiot
DECLARE @Przedmiot varchar(50)
DECLARE @IloscOnen varchar(50)
OPEN db_cursor  
    FETCH NEXT FROM db_cursor into @Przedmiot, @IloscOnen
    WHILE @@FETCH_STATUS = 0
       BEGIN 
       print  @Przedmiot + ' - wystawiono ' + @IloscOnen + ' ocen'
          FETCH NEXT FROM db_cursor
       END 
CLOSE db_cursor  
DEALLOCATE db_cursor 
go

标签: sqlsql-servertsql

解决方案


您需要FETCH将值放入变量中:

DECLARE db_cursor CURSOR FOR 
        SELECT Przedmiot, COUNT(Ocena) 'wystawiono n ocen'
        from Przedmiot
        join ocena 
        on przedmiot.IdPrzedmiot = Ocena.IdPrzedmiot
        group by Przedmiot
DECLARE @Przedmiot varchar(50)
DECLARE @IloscOnen varchar(50)
OPEN db_cursor  
    FETCH NEXT FROM db_cursor into @Przedmiot, @IloscOnen
    WHILE @@FETCH_STATUS = 0
       BEGIN 
       print  @Przedmiot + ' - wystawiono ' + @IloscOnen + ' ocen'
          FETCH NEXT FROM db_cursor into @Przedmiot, @IloscOnen
       END 
CLOSE db_cursor  
DEALLOCATE db_cursor 
go

推荐阅读