Store Procedure ก็คือการเขียน sql ฝังเอาใว้ในส่วนของ server ซึ่งจะทำการ compile ครั้งเดียวหลังจากที่เราเขียนเสร็จ ซึ่งจะทำให้การทำงานเร็วขึ้น เรามีการใช้งาน store procedure อยู่ 3 แบบ ด้วยกัน
| Input Parameter Only จากตัวอย่างด้านล่างนี้ store procedure จะทำการรับค่าและ เพิ่ม row ใหม่ลงใน เทเบิล create procedure "dba".sp_new_team(in @input integer) และสคริปต์ด้านล่างนี้จะเป็นการเรียกใช้งาน store procedure ดังกล่าว li_int = 98 DECLARE l_procedure PROCEDURE FOR sp_new_team @input=:li_int; EXECUTE l_procedure; CLOSE l_procedure; Output Parameter Onlyจากตัวอย่างด้านล่างนี้ store procedure จะทำการนับค่าของ row ทั้งหมดและคืนค่ากลับมาให้create procedure "dba".sp_team_count() result(count integer) begin select count(*) from team as t end;และสคริปต์ด้านล่างนี้จะเป็นการเรียกใช้งาน store procedure ดังกล่าว DECLARE l_procedure DYNAMIC PROCEDURE FOR SQLSA ; PREPARE SQLSA FROM "EXECUTE sp_team_count" ; EXECUTE DYNAMIC l_procedure; FETCH l_procedure INTO :li_result ; ... CLOSE l_procedure; Input and Output Parameter Onlyจากตัวอย่างด้านล่างนี้ store procedure จะคืนค่าของชื่อ ที่เราทำการ เลือกcreate procedure "dba".sp_team_name(in @teamid integer) result(team_name char(10)) begin select t.team_name from team as t where t.team_id=@teamid end;และสคริปต์ด้านล่างนี้จะเป็นการเรียกใช้งาน store procedure ดังกล่าว li_int = 1 DECLARE l_procedure DYNAMIC PROCEDURE FOR SQLSA ; PREPARE SQLSA FROM "EXECUTE sp_team_name @teamid=?" ; EXECUTE DYNAMIC l_procedure USING :li_int ; FETCH l_procedure INTO :ls_result ; ... CLOSE l_procedure; จากตัวอย่างทั้งหมดด้านบนนี้จะทำการกับ row เพียง row เดียวเท่านั้น ถ้าเราจะกระทำกับหลายๆ row ต้องมีการเรียกใช้ฟังก์ชั่น Do...While ร่วมด้วย |


