Stored Procedure จะสมบูรณ์แบบก็ต่อเมื่อสามารถนำไปใช้งานกับระบบภายนอกได้ เช่น เว็บไซต์, REST API, หรือแอปบนมือถือ
การเชื่อมต่อกับ Stored Procedure ผ่านภาษาโปรแกรมภายนอก ช่วยให้เราสามารถ
- ส่งข้อมูลเข้าไปใน Procedure
- ดึงค่ากลับออกมา (IN/OUT/INOUT)
- ลดการเขียน SQL ซ้ำในโค้ด
- เพิ่มประสิทธิภาพและความปลอดภัย
ตัวอย่างการเรียกใช้ Stored Procedure จากภาษาโปรแกรมภายนอก
การเชื่อมต่อ Stored Procedure ด้วย PHP (MySQLi)
PHP
<?php
$mysqli = new mysqli("localhost", "user", "password", "mydb");
// เรียก Procedure แบบมี OUT parameter
$mysqli->query("CALL get_total_payment(1, @total)");
$result = $mysqli->query("SELECT @total AS total_payment");
$row = $result->fetch_assoc();
echo "ยอดรวม: " . $row['total_payment'];
?>CALL get_total_payment(1, @total)เรียก Procedure โดยส่ง customer_id เข้าไป และรับยอดรวมผ่าน@totalSELECT @totalดึงค่าที่ Procedure คำนวณไว้กลับมาใช้งาน
การเชื่อมต่อ Stored Procedure ด้วย Python (pymysql)
Python
import pymysql
conn = pymysql.connect(host='localhost', user='user', password='pass', db='mydb')
cursor = conn.cursor()
# เรียก Stored Procedure
cursor.callproc('get_total_payment', (1, 0)) # ส่งค่า IN และ placeholder สำหรับ OUT
# ดึงค่า OUT กลับมา
cursor.execute("SELECT @_get_total_payment_1")
result = cursor.fetchone()
print("ยอดรวม:", result[0])- OUT parameter จะเก็บไว้ในตัวแปรชื่ออัตโนมัติ เช่น
@_get_total_payment_1 callproc()เหมาะสำหรับ Procedure ที่มีทั้ง IN/OUT
การเชื่อมต่อ Stored Procedure ด้วย Node.js (mysql2)
JavaScript
const mysql = require('mysql2/promise');
(async () => {
const conn = await mysql.createConnection({
host: 'localhost', user: 'root', password: 'pass', database: 'mydb'
});
await conn.query("CALL get_total_payment(1, @total)");
const [rows] = await conn.query("SELECT @total AS total_payment");
console.log("ยอดรวม:", rows[0].total_payment);
})();