Wednesday, November 19, 2008

ตัวอย่าง Store procedure MySQL

Create store procedure by MySQL Administrator.

  • เปิด 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 เค้าจะดีที่สุด

2 comments:

  1. ลองทำตามด้านบนแระค่ะ
    CREATE 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();

    ไม่เหงมีไรเกิดขึ้นเลยค่ะ ไม่แน่ใจว่า ทำผิดตรงไหนรึเปล่า ค่ะ

    ReplyDelete
  2. 1. ถ้าจะให้ชัวร์ีลองนำ select และ insert ใน store รันใน MySQL Toolkit หรือ ผ่าน command ก่อนน่าจะดีกว่านะ ว่าใช้ใด้หรือป่าว statement เราอ่ะครับ ใช้ได้ในทีนี้รวมทั้ง เช็คการ join กันด้วย

    2.ถ้า statement ใช้ได้ทำงาน ลองเช็ค store syntax อีกที
    http://www.mysqltutorial.org/

    ถ้าจะโอเคนะ เช็คประมาณนี้อ่ะครับ

    ReplyDelete