- เดิมใช้วิธีดึงข้อมูลจากฐานข้อมูลมาหลาย ๆ ครั้ง แล้วค่อยเขียนโปรแกรม Vb.Net จัดการข้อมูลอีกทีนึง ทำให้สิ้นเปลืองเวลา ในการแก้ไข Code และได้มองหาวิธีที่จะมาช่วยแก้ปัญหานี้
- พบวิธีสร้างและใช้งาน Stored Procedure ศึกษาหาข้อมูลผ่าน Net
- ลองสร้างและใช้งาน Stored Procedure แล้วทำให้รู้ว่า
- ได้ใช้ความสามารถของ MS SQL Server ได้อย่างมีประสิทธิภาพมากกว่าเดิมที่เคยใช้
- ไม่จำเป็นต้องดึงข้อมูลจากฐานข้อมูลมาหลาย ๆ เพราะสามารถดึงข้อมูลครั้งเดียวแล้วได้ข้อมูลครบตามที่ต้องการใช้งาน
- ลดเวลาในการเขียน/แก้ไข Code โปรแกรม ใน Application
- เริ่มสร้าง Stored Procedure จากง่าย ๆ ก่อนดังนี้
- เมื่อเข้าสู่ Microsoft SQL Server Management Studio แล้วคลิกเลือก Database ที่ต้องการ > คลิก เลือก Programmability > คลิกเลือก Stored Procedures > คลิกขวาเลือก New Stored Procedure...
- ลบข้อความหลัง CREATE PROCEDURE ออก แล้วตั้งชื่อ Stored Procedure ที่ต้องการจะสร้างขึ้นมาใหม่ (อาจตั้งชื่อขึ้นต้นด้วยตัวอักษร sp แล้วตามด้วยชื่อ เช่น spYourProcedureName)
- ลบข้อความที่ขึ้นต้นด้วย <@Param ทั้ง 2 บรรทัดออก แล้วใส่ชื่อ พารามิเตอร์ซึ่งต้องขึ้นต้นด้วยเครื่องหมาย @ และ ระบุชนิดของข้อมูล ถ้ามี พารามิเตอร์มากกว่า 1 ตัว ให้ คั่นด้วย เครื่องหมาย คอมม่า
- ลบบรรทัดที่อยู่ระหว่าง BEGIN และ END ออก แล้วใส่ Query Command ต่าง ๆ ตามที่ต้องการ
- คลิกปุ่ม Execute เพื่อบันทึก Stored Procedure ที่สร้างขึ้นมาใหม่
- ตัวอย่าง Stored Procedure
USE [Energy]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE spEnergyGen6
@MeterDateTime datetime
AS
BEGIN
SET LANGUAGE US_ENGLISH
DECLARE @D1 DateTime ;
DECLARE @D2 DateTime ;
DECLARE @intHour Integer ;
SET @D1 = DATEADD(HH,0,@MeterDateTime)
SET @D2 = DATEADD(HH,1,@MeterDateTime)
SET @intHour = DATEPART(HH,@MeterDateTime)
SELECT TagDateTime
,G4G6NETim
,G4G6NETex
FROM EnergyGen6
WHERE TagDateTime IN ( SELECT MIN(TagDateTime)
FROM EnergyGen6
WHERE TagDatetime between @D1 and @D2
GROUP BY CONVERT(VARCHAR(8), TagDateTime, 112), DATEPART(HOUR,TagDateTime)
HAVING DATEPART(HH,TagDateTime) = @intHour
)
END
ตัวอย่าง การเรียกใช้งาน Stored Procedure
Exec spEnergyGen6 @MeterDateTime = '2019-05-03 00:00:00'
ถ้าจะเปลี่ยนแปลงแก้ไข Stored Procedure ก็เลือก Stored Procedure นั้นแล้วคลิกขวา เลือก Modify
ReplyDeleteจะสังเกตเห็นว่า ALTER PROCEDURE spYourStoredProcedure แทนตอนที่สร้างมันจะเป็น CREATE PROCEDURE spYourStoredProcedure
เมื่อแก้ไข ก็คลิกปุ่ม Execute เป็นการบันทึก Stored Procedure ที่แก้ไขใหม่นั้น