Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> SQL Server

PROCEDURE (ขั้นตอนจัดเก็บ) ใน SQL Server

Procedure (Stored Procedure) เป็นโปรแกรมในฐานข้อมูลที่ประกอบด้วยหลายคำสั่ง ที่คุณบันทึกไว้เพื่อใช้งานภายหลัง ใน SQL Server คุณสามารถส่งพารามิเตอร์เข้าไปใน Procedure แม้จะไม่คืนค่าเฉพาะเจาะจงเหมือนฟังก์ชัน แต่จะระบุว่าดำเนินการสำเร็จหรือล้มเหลว

บทความนี้จะให้ไวยากรณ์และตัวอย่างวิธีสร้างและลบ Procedure ใน SQL Server

CREATE PROCEDURE

ไวยากรณ์

การสร้าง Procedure ใน SQL Server ใช้ไวยากรณ์ดังนี้:

CREATE {PROCEDURE | PROC} [schema_name.] procedure_name
[@parameter [type_schema_name.] datatype
[VARYING] [= default] [OUT | OUTPUT | READONLY]
, @parameter [type_schema_name.] datatype
[VARYING] [= default] [OUT | OUTPUT | READONLY]]

[WITH {ENCRYPTION | RECOMPILE | EXECUTE AS Clause}]
[FOR REPLICATION]

AS

BEGIN
[declaration_section]

executable_section

END;

พารามิเตอร์:

  1. schema_name: ชื่อสคีม่า (schema) ที่เป็นเจ้าของ Procedure
  2. procedure_name: ชื่อที่กำหนดให้ Procedure
  3. @parameter: พารามิเตอร์หนึ่งหรือหลายตัวที่ส่งเข้าไปในฟังก์ชัน
  4. type_schema_name: ชนิดข้อมูลของสคีม่า (หากมี)
  5. datatype: ชนิดข้อมูลสำหรับ @parameter
  6. default: ค่าเริ่มต้นที่กำหนดให้ @parameter
  7. OUT / OUTPUT: @parameter เป็นพารามิเตอร์เอาต์พุต
  8. READONLY: @parameter ไม่สามารถเขียนทับโดย Procedure ได้
  9. ENCRYPTION: รหัสต้นทางของ Procedure จะไม่ถูกเก็บเป็นข้อความในระบบ
  10. RECOMPILE: คำสั่งจะไม่ถูกแคช (cache) สำหรับ Procedure นี้
  11. EXECUTE AS clause: ระบุบริบทความปลอดภัยในการดำเนินการ Procedure
  12. FOR REPLICATION: Procedure ที่บันทึกจะดำเนินการเฉพาะระหว่างกระบวนการ replication

ตัวอย่าง

CREATE PROCEDURE spNhanvien
@nhanvien_name VARCHAR(50) OUT

AS

BEGIN

DECLARE @nhanvien_id INT;

SET @nhanvien_id = 8;

IF @nhanvien_id < 10
    SET @nhanvien_name = 'Smith';
ELSE
    SET @nhanvien_name = 'Lawrence';

END;

Procedure ด้านบนชื่อ spNhanvien มีพารามิเตอร์ @nhanvien_name เป็นเอาต์พุต ค่าของพารามิเตอร์จะขึ้นอยู่กับ @nhanvien_id

หลังจากนั้น คุณสามารถเรียกใช้ spNhanvien ได้ดังนี้:

USE [test]
GO

DECLARE @site_name VARCHAR(50);

EXEC FindSite @site_name OUT;

PRINT @site_name;

GO

DROP PROCEDURE (ลบ Procedure)

หลังจากสร้าง Procedure สำเร็จแล้ว ก็จะมีกรณีที่ต้องการลบ Procedure ออกจากฐานข้อมูลด้วยเหตุผลบางอย่าง

ไวยากรณ์

การลบ Procedure มีไวยากรณ์ดังนี้:

DROP PROCEDURE procedure_name;

พารามิเตอร์:

procedure_name: ชื่อ Procedure ที่ต้องการลบ

ตัวอย่าง

DROP PROCEDURE spNhanvien;

การรันคำสั่งนี้จะลบ Procedure spNhanvien ออกจากฐานข้อมูล