เราต้องมีข้อกำหนดเบื้องต้นต่อไปนี้ก่อนเริ่มเขียนและใช้ MySQL stored procedures
เวอร์ชัน MySQL
ตามที่รู้ว่า MySQL 5 นำเสนอ stored procedures ดังนั้น ขั้นแรก เราต้องตรวจสอบเวอร์ชันของ MySQL ก่อนเริ่มเขียนและใช้ stored procedures สามารถทำได้ด้วยคำสั่งต่อไปนี้
mysql> Select VERSION(); +-----------+ | VERSION() | +-----------+ | 5.7.20 | +-----------+ 1 row in set (0.10 sec)
สิทธิ์ของผู้ใช้ปัจจุบัน
จริงๆ แล้ว CREATE PROCEDURE และ CREATE FUNCTION ต้องการสิทธิ์ CREATE ROUTINE โดยค่าเริ่มต้น MySQL ให้สิทธิ์ ALTER ROUTINE และ EXECUTE แก่ผู้สร้าง routine อัตโนมัติ พฤติกรรมนี้สามารถเปลี่ยนได้โดยการปิดตัวแปรระบบ automatic_sp_privileges สิทธิ์ของผู้ใช้ปัจจุบันสามารถตรวจสอบได้ด้วยคำสั่งต่อไปนี้
mysql> SHOW PRIVILEGES
การเลือกฐานข้อมูล
ก่อนสร้าง procedure เราต้องเลือกฐานข้อมูลจากฐานข้อมูลที่มีอยู่ สามารถทำได้ด้วยความช่วยเหลือของคำสั่งต่อไปนี้
mysql> USE query; Database changed
จากคำสั่งข้างต้น ชัดเจนว่าเรากำลังใช้ฐานข้อมูลชื่อ 'query'
การเลือก DELIMITER
Delimiter คือตัวอักษรหรือสตริงของตัวอักษรที่ใช้เพื่อจบคำสั่ง SQL โดยค่าเริ่มต้น เราใช้เครื่องหมายเซมิโคลอน (;) เป็น delimiter แต่สิ่งนี้ทำให้เกิดปัญหาใน stored procedures เพราะ procedure อาจมีหลายคำสั่ง และทุกคำสั่งต้องลงท้ายด้วยเซมิโคลอน ดังนั้นสำหรับ delimiter ของคุณ ให้เลือกสตริงที่พบได้นادرภายในคำสั่งหรือภายใน procedure เราสามารถเลือก double backslash // หรือ double dollar signs $$ หรือ delimiter อื่นๆ ที่เราชอบ สามารถทำได้ด้วยความช่วยเหลือของคำสั่งต่อไปนี้
mysql> DELIMITER // ;
ตอนนี้ delimiter เริ่มต้นได้เปลี่ยนเป็นเครื่องหมาย // แล้ว และสามารถตรวจสอบได้จากคำสั่งต่อไปนี้
mysql> Select * from student_info // +------+---------+------------+------------+ | id | Name | Address | Subject | +------+---------+------------+------------+ | 100 | Aarav | Delhi | Computers | | 101 | YashPal | Amritsar | History | | 105 | Gaurav | Jaipur | Literature | | 110 | Rahul | Chandigarh | History | +------+---------+------------+------------+ 4 rows in set (0.00 sec)