subject:{ CREATE | ALTER } PROCEDURE
syntax:{ CREATE | ALTER } PROCEDURE procedure_name
[ @parameter data_type [ VARYING ] [ = default_value ] [ OUTPUT ] ]
[ WITH { RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION } ]
[ FOR REPLICATION ]
AS sql_statement
content:โดย VARYING ใช้ในเรื่องของ CURSOR
โดย default_value ใช้กำหนดค่าเริ่มต้น กรณีที่ไม่มีการส่งค่ามา
โดย OUTPUT หมายถึง Parameter ตัวนี้จะเป็นค่าที่ส่งกลับ
โดย WITH RECOMPILE คือทุกๆครั้งที่ทำการ run จะมีการ compile ใหม่ทุกครั้ง
จะทำให้มีการเกิด Execution Plan ลงใน Procedure Cache
จะเหมาะกับ stroed procedure ที่มีการส่งค่าใหม่ๆไปทุกครั้ง
โดย WITH ENCRYPTION คือกำหนดให้เข้ารหัสของ stroed procedure
โดย FOR REPLICATION ใช้ในเรื่องของการทำ Replication
( โดยปกติค่าที่ RETURN กลับจาก stored procedure จะใช้เพื่อตรวจสอบสถานะของ stored procedure เท่านั้น
ดังนั้น ค่าที่คืนกลับมาจะต้องเป็น Integer เท่านั้น แต่ก็สามารถนำมาประยุกต์ใช้ให้เกิดประโยชน์ได้ )
example:--- ex1
CREATE PROCEDURE up_test
AS
SELECT * FROM subject
--- ex2
CREATE PROCEDURE up_sum
@value_1 int,
@value_2 int,
@value_3 int,
@result int output
AS
SELECT @result = @value_1 + @value_2 + @value_3
DECLARE @total int
EXEC up_sum 10, 20, 30, @total OUTPUT
SELECT @total
DECLARE @total int
EXEC up_sum @value_3 = 30, @value_2 = 20, @value_1 = 10, @result = @total OUTPUT
SELECT @total
--- ex3
CREATE PROCEDURE up_sum_2
@value_1 int,
@value_2 int,
@value_3 int,
@result int = 0
AS
BEGIN
SELECT @result = @value_1 + @value_2 + @value_3
RETURN @result
END
DECLARE @total int
EXEC @total = up_sum_2 10, 20, 30
SELECT @total