ตอนที่ 8 : การใช้ If ....Else If...Else สร้างเงื่อนไข (SQL Server : Stored Procedure)
ตอนที่ 8 : การใช้ If ....Else... สร้างเงื่อนไข (SQL Server : Stored Procedure) ในหัวข้อนี้เราจะมาเรียนรู้การใช้งาน IF บน Stored Procedure เพราะคำสั่งนี้เป็นการสร้างเงื่อนไขในการทำงานที่ได้ค่ามาจาก Parameters และ Variable และมันค่อนข้างจะมีความจำเป็นและสำคัญมากในการเขียน Stored และ สามารถนำคำสั่ง If ไปประยุกต์การใช้งานได้หลากหลายในทุก ๆ ส่วนของการเขียน Stored Procedure โดยเราสามารถแบ่งการใช้งาน If ออกเป็น 3 รูปแบบย่อย ๆ คือ
If
IF... Else If...
IF... Else If...Else
โครงสร้างของตาราง CUSTOMER และ COUNTRY
Table : CUSTOMER
Table : COUNTRY
IF Syntax
IF (Expression)
BEGIN
// Statement
END
IF... Else IF Syntax
IF (Expression)
BEGIN
// Statement
END
ELSE IF (Expression)
BEGIN
// Statement
END
IF... Else IF... Else Syntax
IF (Expression)
BEGIN
// Statement
END
ELSE IF (Expression)
BEGIN
// Statement
END
ELSE
BEGIN
// Statement
END
Example : ตัวอย่างการใช้ IF...Else IF... Else ในรูปแบบที่ง่าย ๆ บน Store Procedure
USE [mydatabase]
GO
/****** Object: StoredProcedure [dbo].[myStoredProcedure] Script Date: 12-Sep-15 12:39:38 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[myStoredProcedure]
@pType VARCHAR(2)
AS
BEGIN
-- Declare Variable
DECLARE @sName VARCHAR(50)
DECLARE @sEmail VARCHAR(50)
-- Declare cursor from select table 'CUSTOEMR'
IF (@pType = 1)
BEGIN
DECLARE cursor_customer CURSOR FOR
SELECT NAME,EMAIL FROM CUSTOMER
WHERE COUNTRY_CODE = 'TH'
END
ELSE IF (@pType = 2)
BEGIN
DECLARE cursor_customer CURSOR FOR
SELECT NAME,EMAIL FROM CUSTOMER
WHERE COUNTRY_CODE = 'US'
END
ELSE
BEGIN
DECLARE cursor_customer CURSOR FOR
SELECT NAME,EMAIL FROM CUSTOMER
WHERE COUNTRY_CODE = 'UK'
END
-- Open Cursor
OPEN cursor_customer
FETCH NEXT FROM cursor_customer
INTO @sName, @sEmail;
-- Loop From Cursor
WHILE (@@FETCH_STATUS = 0)
BEGIN
-- Display
PRINT 'Name : ' + @sName + ', Email : ' + @sEmail
FETCH NEXT FROM cursor_customer -- Fetch next cursor
INTO @sName, @sEmail -- Next into variable
END
-- Close cursor
CLOSE cursor_customer;
DEALLOCATE cursor_customer;
END