- เปิด MySQL Administrator ซึ่งเป็นโปรแกรมใน MySQL Toolkit
- เลือกเมนู Catalogs => เลือก Database ที่จะทำการสร้าง Procedure
- เลือกที่แท๊ป Store procedure => Create Store proc
Example code store procedure MySQL :
CREATE DEFINER=`root`@`localhost` PROCEDURE `SAMPLE`(p1 varchar(50), p2 int)
BEGIN
# การประการตัวแปร หรือ สิ้นสุดประโยคใดๆ ต้องต่อท้ายด้วย semi-colon
declare temp varchar(50) ;
declare i int ;
set i = p2;
# การกำหนดค่าให้ตัวแปร
while i <> '100' do # การใช้ while loop
if i % 2 = 0 then
# sql statement something or set some value ........... ;
end if;
end while ;
# จบ while loop แล้วอย่าลืม semi-colon ด้วย
END
- เราสามารถเลือก store procedure ที่เราสร้างขึ้นโดยคำสั่ง
- call store_name(param...);
- สรุปคือไปดู mysql manual เค้าจะดีที่สุด
ลองทำตามด้านบนแระค่ะ
ReplyDeleteCREATE DEFINER=`root`@`localhost` PROCEDURE `CalManPower`()
BEGIN
DECLARE ShA INT;
DECLARE conxa INT;
SELECT count(a.empcode) conxa
into ShA
FROM overtimed a ,tbldept c ,overtimeh d
WHERE c.code=d.sectioncode and d.Sectioncode= '110'
and a.Dateh = 20090323 AND (a.shifts ='D' or a.shifts ='SO')
AND d.Formnoh=a.Formno AND a.dateh=d.Startdate AND Division ='KD'
AND a.Formno IN ( 'OT003364' );
INSERT into attendance(Dateh,ShA,sectioncode)
values (20090303,ShA,'110');
END
หลังจากนั้น ก็สร้าง php มา1 ไฟล์
แล้วเรียกใช้ procedure ตัวนี้แบบนี้ค่ะ
call CalManpower();
ไม่เหงมีไรเกิดขึ้นเลยค่ะ ไม่แน่ใจว่า ทำผิดตรงไหนรึเปล่า ค่ะ
1. ถ้าจะให้ชัวร์ีลองนำ select และ insert ใน store รันใน MySQL Toolkit หรือ ผ่าน command ก่อนน่าจะดีกว่านะ ว่าใช้ใด้หรือป่าว statement เราอ่ะครับ ใช้ได้ในทีนี้รวมทั้ง เช็คการ join กันด้วย
ReplyDelete2.ถ้า statement ใช้ได้ทำงาน ลองเช็ค store syntax อีกที
http://www.mysqltutorial.org/
ถ้าจะโอเคนะ เช็คประมาณนี้อ่ะครับ