ตอนที่ 5 : การสร้าง Declare Table สร้างตัวแปรแบบตาราง (SQL Server : Stored Procedure) |
ตอนที่ 5 : การสร้าง Declare Table สร้างตัวแปรแบบตาราง (SQL Server : Stored Procedure) สำหรับ Feature ของการ Declare Table เป็นเสมือนการสร้าง Temp Table ไว้ชั่วคราว โดยความสามารถนี้ค่อนข้างถือได้ว่าเป็นจุดเด่นและสุดยอดของการเขียน Store Procedure เลยก็ว่าได้ เพราะวัตถุประสงค์ของการเขียน Query เพื่ออ่านข้อมูลจาก Table ก็คือการดึงค่า Result กลับมาใช้บน Application และในกรณีถ้า SQL Query ที่มีความซับซ้อนจนกว่าจะเขียน Query ในแบบปกติได้ การประกาศตัวแปรแบบ Table ขึ้นมา แล้วค่อยคำค่า Result ทีล่ะส่วนที่ได้จาก Statement ต่างมา Insert ลงใน Table ก็เป็นวิธีที่ถูกนำมาใช้งานกันอย่างมาก และการเขียนก็ค่อนข้างง่าย เพียงแค่ประกาศชื่อตัวแปร พร้อมกับ Column และ Data Type จากนั้นสามารถทำการ Insert ข้อมูลลงใน Table หรือจะเลือก Insert จาก Table อื่น ๆ จนครบตามความต้องการ แล้วค่อยส่งค่าทั้งหมดกลับไป
โครงสร้างของตาราง CUSTOMER และ COUNTRY
Table : CUSTOMER
Table : COUNTRY
Declare TABLE Syntax
DECLARE @temp TABLE
(
RowID INT IDENTITY (1,1),
Name VARCHAR(50),
LastName VARCHAR(50),
Country VARCHAR(50)
)
เป็นการสร้างตัวแปรชนิดตารางชื่อว่า @temp ประกอบด้วยคอลัมบ์ RowID,Name,LastName,Country
Example 1 : การสร้าง Declare ตัว Table และ Insert ข้อมูลงใน Table พร้อมกับส่งค่ากลับไป
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]
@pCountry VARCHAR(10)
AS
BEGIN
-- Declare Table
DECLARE @temp TABLE
(
RowID INT IDENTITY (1,1),
Name VARCHAR(50),
LastName VARCHAR(50),
Country VARCHAR(50)
)
-- Insert Table
INSERT INTO @temp (Name,LastName,Country) VALUES ('Weerachai','Nukitram',@pCountry)
INSERT INTO @temp (Name,LastName,Country) VALUES ('Surachai','Sirisart',@pCountry)
INSERT INTO @temp (Name,LastName,Country) VALUES ('Adisorn','Boonsong',@pCountry)
-- Return Rows
SELECT * FROM @temp
END
GO
ตัวอย่างนี้จะเป็นการสร้าง Table และการ Insert ข้อมูลลงใน Table พร้อมกับส่งค่า Rows กลับไป โดยจะมีการรับค่า Parameters ผ่าน Stored Procedure และนำมาใช้กับ Table ด้วย
EXEC myStoredProcedure 'Thailand'
Result
Example 2 : การสร้าง Declare ตัว Table และ Insert ข้อมูลงใน Table โดย Select ข้อมูลจาก Table อื่น
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),
Country VARCHAR(50)
)
-- Insert Table from Table : CUSTOMER
INSERT INTO @temp (Name,Country) SELECT NAME,COUNTRY_CODE FROM CUSTOMER
-- Return Rows
SELECT * FROM @temp
END
GO
ตัวอย่างนี้จะเป็นการสร้าง Table และการ Insert ข้อมูลลงใน Table ที่ได้ Select มาจาก CUSTOMER พร้อมกับส่งค่า Rows กลับไป
EXEC myStoredProcedure
Result
Example 3 : การสร้าง Declare ตัว Table และ Insert ข้อมูลงใน Table โดย Select ข้อมูลจาก Table อื่น และรูปแบบการ Join ข้อมูล
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),
CountryName VARCHAR(50)
)
-- Insert Table from Table : CUSTOMER
INSERT INTO @temp (Name,CountryName)
SELECT NAME,COUNTRY_NAME FROM CUSTOMER A
LEFT JOIN COUNTRY B ON A.COUNTRY_CODE = B.COUNTRY_CODE
-- Return Rows
SELECT * FROM @temp
END
GO
ตัวอย่างนี้จะเป็นการสร้าง Table และการ Insert ข้อมูลลงใน Table ที่ได้ Select มาจาก CUSTOMER และรูปแบบการ Join ข้อมูล พร้อมกับส่งค่า Rows กลับไป
EXEC myStoredProcedure
Result
|