ตอนที่ 6 : การสร้าง Loop ข้อมูลบน Stored Procedure (SQL Server : Stored Procedure) |
ตอนที่ 6 : การสร้าง Loop ข้อมูลบน Stored Procedure (SQL Server : Stored Procedure) การใช้งาน Loop บน Stored Procedure มีรูปแบบง่าย ๆ โดยใช้คำสั่ง WHILE โดยลูปชนิดนี้ จะพิจารณาเงื่อนไขแล้วค่อยทำ ถ้าเงื่อนไขเป็นจริงจะทำใน Statement ถ้าเท็จ จะกระโดดออกจากลูปทันที มีรูปแบบ Syntax การใช้งานที่ง่าย ๆ สามารถประยุคนำไปใช้งานบน Stored Procedure ค่า Variable หรือ Parametersได้ทั้งจาก Loop เช่น เงื่อนไขที่เป็นตัวเลข, เงื่อนไขบูลลิน, เงื่อนไขที่มาจาก Cursor และอื่น ๆ
โครงสร้างของตาราง CUSTOMER และ COUNTRY
Table : CUSTOMER
Table : COUNTRY
Loop Syntax
WHILE (Condition)
BEGIN
//Statement
END -- WHILE
Example 1 : การสร้าง Parameters รับค่า ตัวเลข และ Loop ข้อมูลตามจำนวนที่รับมาจาก Parameters
USE [mydatabase]
GO
/****** Object: StoredProcedure [dbo].[myStoredProcedure] Script Date: 11-Sep-15 3:29:52 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[myStoredProcedure]
@pLimitRow INT
AS
BEGIN
DECLARE @i INT
SET @i = 1
WHILE (@i <= @pLimitRow)
BEGIN
PRINT + ' Row : ' + CONVERT(VARCHAR,@i)
SET @i = @i + 1
END -- WHILE
END
GO
ตัวอย่างนี้จะรัวค่าตัวเลข และ Loop แสดงรายการตามจำนวนตัวเลขที่รับมาจาก Parameters
EXEC myStoredProcedure '10'
Result
Example 2 : การสร้าง Insert Table การนับ Row และการแสดงข้อมูลในรูปแบบ Loop แสดงผล
USE [mydatabase]
GO
/****** Object: StoredProcedure [dbo].[myStoredProcedure] Script Date: 11-Sep-15 3:29:52 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[myStoredProcedure]
AS
BEGIN
-- Declare Table
DECLARE @temp TABLE
(
RowID INT IDENTITY (1,1),
Name VARCHAR(50),
LastName VARCHAR(50)
)
-- Insert Table
INSERT INTO @temp (Name,LastName) VALUES ('Weerachai','Nukitram')
INSERT INTO @temp (Name,LastName) VALUES ('Surachai','Sirisart')
INSERT INTO @temp (Name,LastName) VALUES ('Adisorn','Boonsong')
-- Variable
DECLARE @i INT
DECLARE @iRow INT
DECLARE @sName VARCHAR(50)
DECLARE @sLastName VARCHAR(50)
-- Set Variable
SET @i = 1
SELECT @iRow = COUNT(*) FROM @temp
-- Loop Row
WHILE (@i <= @iRow)
BEGIN
-- Select from table
SELECT @sName = Name , @sLastName = LastName
FROM @temp WHERE RowID = @i
-- Print output
PRINT ' Row : ' + CONVERT(VARCHAR,@i) + ', Name : ' + @sName + ', LastName : ' + @sLastName
SET @i = @i + 1
END -- WHILE
END
GO
ตัวอย่างนี้จะเป็นการสร้าง Insert Table และการนับจำนวนแถว พร้อมกับ Loop เพื่อแสดงรายการของข้อมูล
EXEC myStoredProcedure
Result
|