Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ข้อดีของ Stored Procedures


ข้อดีของ Stored Procedures:

  • คอมไพล์และเก็บไว้แล้ว เรียกใช้ตอบสนองเร็ว

  • รวมคำสั่ง SQL ที่ต้องการใน procedure เดียว รันครั้งเดียวจบ

  • รันบน database server ที่เร็วกว่า client เหมาะกับคำสั่งซับซ้อน

  • ลดซ้ำโค้ด ใช้ฟังก์ชัน SQL เพิ่มเติมได้ เช่น เรียก stored functions

  • คอมไพล์ครั้งเดียว ใช้ในหลายแอปพลิเคชัน เปลี่ยน procedure ได้โดยไม่ต้องแก้โค้ดแอป

  • เรียก PL/SQL stored procedures จาก Java และ Java stored procedures จาก PL/SQL ได้

ตัวอย่าง

ตาราง Employees:

+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| Name     | varchar(255) | YES  |     | NULL    |       |
| Salary   | int(11)      | NO   |     | NULL    |       |
| Location | varchar(255) | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+

Procedure myProcedure insert ข้อมูล:

Create procedure myProcedure (IN name VARCHAR(30), IN sal INT, IN loc VARCHAR(45))
->
BEGIN
->
INSERT INTO Employees(Name, Salary, Location) VALUES (name, sal, loc);
->
END //

โปรแกรม JDBC เรียก procedure:

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Example {
    public static void main(String args[]) throws SQLException {
        // ลงทะเบียน Driver
        DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        // เชื่อมต่อ
        String mysqlUrl = "jdbc:mysql://localhost/testdb";
        Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
        System.out.println("Connection established......");
        // เตรียม CallableStatement
        CallableStatement cstmt = con.prepareCall("{call myProcedure(?, ?, ?)}");
        cstmt.setString(1, "Amit");
        cstmt.setInt(2, 3000);
        cstmt.setString(3, "Hyderabad");
        cstmt.execute();
        cstmt.setString(1, "Kalyan");
        cstmt.setInt(2, 4000);
        cstmt.setString(3, "Vishakhapatnam");
        cstmt.execute();
    }
}

ผลลัพธ์

Connection established......

ตรวจสอบตาราง Employees จะพบแถวใหม่:

+-----------+--------+----------------+
| Name      | Salary | Location       |
+-----------+--------+----------------+
| Amit      | 3000   | Hyderabad      |
| Kalyan    | 4000   | Vishakhapatnam |
+-----------+--------+----------------+