MySQL การเชื่อมต่อ Stored Procedure กับภาษาโปรแกรมภายนอก (PHP, Python, Node.js)

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 เข้าไป และรับยอดรวมผ่าน @total
  • SELECT @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);
})();
แชร์เรื่องนี้