Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana saya bisa mengulangi recordset dalam prosedur tersimpan?

Anda perlu membuat kursor untuk mengulang kumpulan rekaman.

Contoh Tabel:

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

Kursor:

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

Berikut ini tautan ke MSDN tentang cara membuatnya.

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

Inilah mengapa saya menggunakan Raise Error alih-alih PRINT untuk output.
http://structuredsight.com/2014/11/24/wait-wait-dont-tell-me-on-second-thought/



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sisipkan SqlBulkCopy dengan Kolom Identitas

  2. Menangani nilai negatif dengan sql

  3. Butuh bantuan untuk menemukan Kueri T-SQL yang benar

  4. Bagaimana dua pernyataan pembaruan di bawah ini berbeda dalam SQL?

  5. Bisakah kita mengembalikan ke keadaan semula setelah kita menggunakan DBCC CHECKIDENT untuk memulai kembali jumlah kolom Identitas?