ตอนที่ 4 : การสร้างตัวแปร Declare Variable บน Stored Procedure (SQL Server : Stored Procedure) |
ตอนที่ 4 : การสร้างตัวแปร Declare Variable บน Stored Procedure (SQL Server : Stored Procedure) การสร้างตัวแปรบน Stored Procedure เป็นพื้นฐานที่เราจำเป็นจะต้องรู้และใช้งานให้ถูกต้อง เพราะค่าจะถูกหรือผิด ชนิดของตัวแปรนั้นค่อนข้างจะสำคัญมาก เพราะตัว Database ของ SQL Server ค่อนข้างจะให้ความสำคัญในการจัดเก็บตามชนิดของข้อมูล เช่นถ้าเป็นข้อมูลวันที่ ก็ควจจะใช้ DateTime หรือตัวเลขจำนวนเต็มก็ให้ใช้ Int ส่วนพวกค่าเงินหรือค่าตัวแปรที่เป็นทศนิยมสามารถใช้พวก Double , Decimal และกำหนดขนาดความยาวของการจัดเก็บให้ถูกต้อง และเมื่อนำค่าต่าง ๆ เหล่านี้ไปใช้ในตัวแปร การประกาศค่าตัวแปรที่รับก็จะต้องประกาศให้ถูกต้องตามชนิดของข้อมูลนั้น ๆ ด้วย
โครงสร้างของตาราง CUSTOMER และ COUNTRY
Table : CUSTOMER
Table : COUNTRY
Declare Variable Syntax
DECLARE @sName VARCHAR(50) -- แบบ Varchar หรือ String
DECLARE @iCount INT -- แบบ Integer สามารถใช้ได้แบบ INT หรือ INTEGER
DECLARE @iTotalBudget DECIMAL(20,2) -- แบบ Decimal
ตัวอย่างการประกาศตัวแปรแบบง่าย ๆ และยังมีชนิดอื่น ๆ หลายตัว และจะต้องเลือกให้ถูกตามชนิดของข้อมูล
Assign Variable Syntax
SET @sName = "Weerachai Nukitram"
SELECT @iCount = COUNT(*) FROM table_name
Example 1 : การสร้าง Declare ตัว Variable และ Assign ค่าให้กับตัวแปร
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]
@pCountryCode VARCHAR(2),
@pUsed INTEGER
AS
BEGIN
-- Declare Variable
DECLARE @iTotalBudget DECIMAL(20,2)
DECLARE @iTotalUsed DECIMAL(20,2)
-- Sum Budget
SELECT @iTotalBudget = SUM(BUDGET) FROM CUSTOMER WHERE COUNTRY_CODE = @pCountryCode
AND USED >= @pUsed
-- Sum Used
SELECT @iTotalUsed = SUM(USED) FROM CUSTOMER WHERE COUNTRY_CODE = @pCountryCode
AND USED >= @pUsed
PRINT 'pCountryCode : ' + @pCountryCode
PRINT 'pUsed : ' + CAST(@pUsed AS VARCHAR(10))
PRINT 'Total Budget : ' + CAST(@iTotalBudget AS VARCHAR(10))
PRINT 'Total Used : ' + CAST(@iTotalUsed AS VARCHAR(10))
END
GO
ตัวอย่างนี้จะเป็นการประกาศค่าตัวแปร และการ Assign ค่าหรือกำหนดค่าในรูปแบบต่าง ๆ
EXEC myStoredProcedure 'US','100000'
Result
pCountryCode : US
pUsed : 100000
Total Budget : 7000000.00
Total Used : 700000.00
Example 2 : การสร้าง Declare ตัว Variable และ Assign ค่าให้กับตัวแปร และการนำค่าตัวแปร มา บวก หรือ ลบ
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]
@pCountryCode VARCHAR(2),
@pUsed INTEGER
AS
BEGIN
-- Declare Variable
DECLARE @iQueryRowCount INT
DECLARE @iTotalBudget DECIMAL(20,2)
DECLARE @iTotalUsed DECIMAL(20,2)
DECLARE @iDiffBudget DECIMAL(20,2)
-- Sum Budget & Sum Used
SELECT @iTotalBudget = SUM(BUDGET) , @iTotalUsed = SUM(USED) FROM CUSTOMER WHERE COUNTRY_CODE = @pCountryCode
AND USED >= @pUsed
-- Diff Budget
SET @iDiffBudget = @iTotalBudget - @iTotalUsed
-- Row Count
SELECT * FROM CUSTOMER WHERE COUNTRY_CODE = @pCountryCode
AND USED >= @pUsed
SET @iQueryRowCount = @@ROWCOUNT
PRINT 'pCountryCode : ' + @pCountryCode
PRINT 'pUsed : ' + CAST(@pUsed AS VARCHAR(10))
PRINT 'Total Budget : ' + CAST(@iTotalBudget AS VARCHAR(10))
PRINT 'Total Used : ' + CAST(@iTotalUsed AS VARCHAR(10))
PRINT 'Diff Budget : ' + CAST(@iDiffBudget AS VARCHAR(10))
PRINT 'Row Count : ' + CAST(@iQueryRowCount AS VARCHAR(10))
END
GO
ตัวอย่างนี้จะเป็นการประกาศค่าตัวแปร และการ Assign ค่าหรือกำหนดค่าในรูปแบบต่าง ๆ
EXEC myStoredProcedure 'US','100000'
Result
(2 row(s) affected)
pCountryCode : US
pUsed : 100000
Total Budget : 700000.00
Total Used : 700000.00
Diff Budget : 6300000.00
Row Count : 2
|