Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm cách nào để tôi có thể lặp lại một tập bản ghi trong một thủ tục được lưu trữ?

Bạn cần tạo một con trỏ để lặp qua tập hợp bản ghi.

Bảng Ví dụ:

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

Con trỏ:

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

Đây là một liên kết đến MSDN về cách tạo chúng.

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

Đây là lý do tại sao tôi sử dụng Raise Error thay vì PRINT cho đầu ra.
http:// architecturedsight.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. Muốn nhận danh sách tất cả các bác sĩ cấp dưới làm việc dưới quyền bác sĩ cấp cao và ngược lại?

  2. Kiểm tra xem RPC Out có được bật trên máy chủ được liên kết hay không

  3. SQL Server - chèn nhiều hàng với câu lệnh đơn (kiểu ANSI)

  4. Làm cách nào để chèn / truy xuất tệp Excel vào cột varbinary (max) trong SQL Server 2008?

  5. Laravel cho SQL Server (sqlsrv). [PDOException] không thể tìm thấy trình điều khiển