ThaiPBL.com

PowerBuilder Library Thailand

อีเมล พิมพ์ PDF

Store Procedure ก็คือการเขียน sql ฝังเอาใว้ในส่วนของ server

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 ร่วมด้วย