在 SQL 中,沒有名為 “foreach” 的循環(huán)結(jié)構(gòu)
首先,創(chuàng)建一個(gè)臨時(shí)表或表變量,用于存儲(chǔ)要處理的數(shù)據(jù)。例如,我們將處理一個(gè)包含學(xué)生信息的表:
CREATE TABLE Students (
ID INT PRIMARY KEY,
Name NVARCHAR(50),
Age INT
);
接下來,插入一些示例數(shù)據(jù):
INSERT INTO Students (ID, Name, Age)
VALUES (1, 'Alice', 20),
(2, 'Bob', 22),
(3, 'Cathy', 19);
現(xiàn)在,我們將使用 CURSOR 遍歷 Students 表中的每一行,并對(duì)每個(gè)學(xué)生執(zhí)行操作。以下是一個(gè)示例,該示例將遍歷表并打印每個(gè)學(xué)生的姓名和年齡:
DECLARE @ID INT;
DECLARE @Name NVARCHAR(50);
DECLARE @Age INT;
-- 聲明一個(gè) CURSOR
DECLARE StudentCursor CURSOR FOR
SELECT ID, Name, Age
FROM Students;
-- 打開 CURSOR
OPEN StudentCursor;
-- 獲取 CURSOR 中的第一行
FETCH NEXT FROM StudentCursor
INTO @ID, @Name, @Age;
-- 遍歷 CURSOR 中的所有行
WHILE @@FETCH_STATUS = 0
BEGIN
-- 在此處執(zhí)行操作,例如打印學(xué)生信息
PRINT 'Student ID: ' + CAST(@ID AS VARCHAR) + ', Name: ' + @Name + ', Age: ' + CAST(@Age AS VARCHAR);
-- 獲取 CURSOR 中的下一行
FETCH NEXT FROM StudentCursor
INTO @ID, @Name, @Age;
END;
-- 關(guān)閉并釋放 CURSOR
CLOSE StudentCursor;
DEALLOCATE StudentCursor;
這個(gè)示例將遍歷 Students 表中的每一行,并打印每個(gè)學(xué)生的 ID、姓名和年齡。請(qǐng)注意,這只是一個(gè)簡單的示例,實(shí)際應(yīng)用中可能需要根據(jù)需求執(zhí)行更復(fù)雜的操作。