| เงื่อนไขการใช้ Stored Procedure | เงื่อนไขการใช้ Stored Procedure |
|---|---|
| Batch คืออะไร ?? | Bacth คืออะไร ?? |
| Script คืออะไร ?? | Script คืออะไร ?? |
| คำสั่งต่างๆที่ใช้ใน Batch และ Script | คำสั่งต่างๆที่ใช้ใน Batch และ Script |
| ประเภทของ Stored Procedures | ประเภทของ Stored Procedures |
| { CREATE | ALTER } PROCEDURE | การ สร้าง หรือ เปลี่ยนแปลง stored procedures |
| DROP PROCEDURE | การ ลบ stored procedures |
| IF - ELSE | IF - ELSE |
| BEGIN - END | BEGIN - END |
subject:เงื่อนไขการใช้ Stored Procedure
content:เงื่อนไขการใช้ Stored Procedure ใน stored procedure สามารถเรียกใช้ stored procedure อื่นได้ ใน stored procedure สามารถเรียกใช้ stored procedure ตัวเองได้ ( ตามแนวคิดของ recursion ) แต่จะไม่สามารถเรียกใช้ได้เกิน 32 ระดับ
subject:Batch คืออะไร ??
content:Batch คือกลุ่มคำสั่ง SQL ซึ่งจะถูกแปลความไปพร้อมกัน โดยใน Batch หนึ่งๆจะถูกปิดท้ายด้วย keyword "GO" ( ถ้าระหว่างประมวลผล Batch หนึ่งๆ แล้วเกิดความผิดพลาดขึ้น คำสั่งถัดไปจะหยุดทำงานทันที แต่คำสั่งก่อนหน้าจะถูกยกเลิกหรือไม่ ขึ้นอยู่กับ การกำหนด commit หรือ rollback )
example:USE function_in_th INSERT INTO subject ( name ) VALUES ( "PHP" ) INSERT INTO subject ( name ) VALUES ( "JAVA" ) GO
subject:Script คืออะไร ??
content:Script คือกลุ่มคำสั่ง SQL หรือกุล่มคำสั่งของ Batch และมักเก็บเป็นไฟล์ไฟล์หนึ่ง
example:USE function_in_th INSERT INTO subject ( name ) VALUES ( "PHP" ) INSERT INTO subject ( name ) VALUES ( "JAVA" ) GO DECLARE @subject_id int SELECT @subject_id = id FROM subject WHERE name = "PHP" UPDATE subject SET name = "PHP Programming" WHERE id = @subject_id GO
subject:คำสั่งต่างๆที่ใช้ใน Batch และ Script
content:คำสั่งต่างๆที่ใช้ใน Batch และ Script USE db_name ใช้กำหนด database ที่จะใช้ script ทำงาน GO ใช้แยกการทำงานของแต่ละ batch ออกจากกัน DECLARE @var_name var_type ใช้ในการประกาศตัวแปร SET @var_name = value ใช้ในการกำหนด ค่าให้กับ ตัวแปร EXEC หรือ EXECUTE ใช้ประมวลผล stored procedures หรือ user defined function หรือ scalar_valued
subject:ประเภทของ Stored Procedures
content:Stored Procedures มี 3 ประเภท 1) System Stored Procedures 2) Extended Stored Procedures 3) User Stored Procedures
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
subject:DROP PROCEDURE
syntax:DROP PROCEDURE procedure_name
content:ใช้ในการลบ stored procedure
example: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; DROP PROCEDURE up_sum;
subject:IF - ELSE
syntax:IF boolean_expression { sql_statement | statement_block } ELSE { sql_statement | statement_block }
content:คำสั่งแบบมีเงื่อนไขที่ใช้ใน Stroed Procedure
example:CREATE PROCEDURE up_sum @value_1 int, @value_2 int, @value_3 int, @result int output AS BEGIN SELECT @result = @value_1 + @value_2 + @value_3 IF @result < 0 @result = 0 ELSE @result = @result * 10 END
subject:BEGIN - END
syntax:BEGIN { sql_statement | statement_block } END
content:ชุดคำสั่งภายใน Stored Procedure
example:CREATE PROCEDURE up_sum @value_1 int, @value_2 int, @value_3 int, @result int output AS BEGIN SELECT @result = @value_1 + @value_2 + @value_3 IF @result < 0 @result = 0 ELSE @result = @result * 10 END