| 
  ตอนที่ 6 : การสร้าง Loop ข้อมูลบน Stored Procedure (SQL Server : Stored Procedure) การใช้งาน Loop บน Stored Procedure มีรูปแบบง่าย ๆ โดยใช้คำสั่ง WHILE  โดยลูปชนิดนี้ จะพิจารณาเงื่อนไขแล้วค่อยทำ ถ้าเงื่อนไขเป็นจริงจะทำใน Statement ถ้าเท็จ จะกระโดดออกจากลูปทันที มีรูปแบบ Syntax การใช้งานที่ง่าย ๆ สามารถประยุคนำไปใช้งานบน Stored Procedure  ค่า Variable หรือ Parametersได้ทั้งจาก Loop เช่น เงื่อนไขที่เป็นตัวเลข, เงื่อนไขบูลลิน, เงื่อนไขที่มาจาก Cursor และอื่น ๆ 
    |  
        ตอนที่ 6 : การสร้าง Loop ข้อมูลบน Stored Procedure (SQL Server : Stored Procedure)       |  
 โครงสร้างของตาราง 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
 
 
   
 
 
 
 |