sql >> データベース >  >> RDS >> Sqlserver

ストアド プロシージャ内でレコードセットを反復処理するにはどうすればよいですか?

    レコード セットをループするカーソルを作成する必要があります。

    表の例:

    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')
    

    カーソル:

    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
    

    これらの作成方法に関する MSDN へのリンクを次に示します。

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

    これが、出力に PRINT の代わりに Raise Error を使用した理由です。
    http://structuredsight.com/2014/11/24/wait-wait-dont-tell-me-on-second-thought/



    1. php /mysqlで12時間形式で>=AND <=を使用してデータを取得するにはどうすればよいですか?

    2. PHPExcelを使用して自動生成されたExcelファイルを作成する

    3. PostgreSQLで列と行を転置する方法(つまり、行と列を切り替える方法)?

    4. Ubuntu14.04でphpMyAdminを使用してMySQLをインストールする方法