儲存過程的優勢是什麼?


以下是使用儲存過程的優勢

  • 由於儲存過程經過編譯和儲存,因此每當您呼叫過程時,響應都很快。

  • 您可以將所有必需的 SQL 語句組合到一個過程中,然後一次執行它們。

  • 由於儲存過程儲存在比客戶端速度更快的資料庫伺服器上,因此您可以使用它執行所有複雜查詢,執行速度將更快。

  • 使用儲存過程,您可以避免程式碼重複,而且還可以使用其他 SQL 功能(如呼叫儲存函式)。

  • 編譯儲存過程後,就可以在任意數量的應用程式中使用,如果您需要修改,您只需更改儲存過程而不必改動應用程式程式碼。

  • 您可以從 Java 中呼叫 PL/SQL 儲存過程,也可以從 PL/SQL 中呼叫 Java 儲存過程。

示例

假設我們建立了一個名為 Employees 的表,其描述如下

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

假設我們有一個名為 myProcedure 的過程,可以將資料插入 Employees 表中,如下所示

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 程式呼叫上述 Java 儲存過程。

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 {
      //Registering the Driver
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      //Getting the connection
      String mysqlUrl = "jdbc:mysql:///testdb";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Preparing a 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 |
+-----------+--------+----------------+

更新時間: 2019 年 7 月 30 日

4K+ 次瀏覽

開啟你的 職業生涯

完成課程以獲得認證

開始
廣告
© . All rights reserved.