sql >> Database >  >> RDS >> Sqlserver

Hoe kan ik een recordset herhalen binnen een opgeslagen procedure?

U moet een cursor maken om door de recordset te bladeren.

Voorbeeldtabel:

CREATE TABLE Customers
(
    CustomerId INT NOT NULL PRIMARY KEY IDENTITY(1,1)
    ,FirstName Varchar(50) 
    ,LastName VARCHAR(40)
)

INSERT INTO Customers VALUES('jane', 'doe')
INSERT INTO Customers VALUES('bob', 'smith')

Cursor:

DECLARE @CustomerId INT, @FirstName VARCHAR(30), @LastName VARCHAR(50)

DECLARE @MessageOutput VARCHAR(100)

DECLARE Customer_Cursor CURSOR FOR 
    SELECT CustomerId, FirstName, LastName FROM Customers


OPEN Customer_Cursor 

FETCH NEXT FROM Customer_Cursor INTO
    @CustomerId, @FirstName, @LastName

WHILE @@FETCH_STATUS = 0
BEGIN
    SET @MessageOutput = @FirstName + ' ' + @LastName



    RAISERROR(@MessageOutput,0,1) WITH NOWAIT

    FETCH NEXT FROM Customer_Cursor INTO
    @CustomerId, @FirstName, @LastName
END
CLOSE Customer_Cursor
DEALLOCATE Customer_Cursor

Hier is een link naar MSDN over hoe u ze kunt maken.

http://msdn.microsoft.com/en-us/library/ms180169 .aspx

Daarom heb ik Raise Error gebruikt in plaats van PRINT voor uitvoer.
http://structuredsight.com/2014/11/24/wait-wait-dont-tell-me-on-second-thought/



  1. Precisie van interval voor PL/SQL-functiewaarde

  2. Gebruik belofte om MySQL-retourwaarde te verwerken in node.js

  3. mysql-query met zoals %..% in de waar-clausule die verschillende resultaten oplevert

  4. Hoe bepaal ik welk type index in Postgres moet worden gebruikt?