การสร้าง Declare Table สร้างตัวแปรแบบตาราง (Temp Table)

การสร้าง 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

ALTER 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 ด้วย

1.EXEC myStoredProcedure 'Thailand'

Result

Declare Table SQL Server : Stored Procedure

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

ALTER 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 กลับไป

1.EXEC myStoredProcedure

Result

Declare Table SQL Server : Stored Procedure

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

ALTER 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 กลับไป

Result

Declare Table SQL Server : Stored Procedure

บทความโดย http://www.thaicreate.com/tutorial/sqlserver-stored-procedure-create-temp-table.html

You May Also Like

About the Author: golderboy