MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

ストアドプロシージャのメリットとは?主な利点とJDBCでの呼び出し例を解説

ストアドプロシージャとは、データベースサーバー側に保存されたSQL文の集合体で、名前を指定して呼び出すだけで実行できる機能です。本記事では、ストアドプロシージャの主なメリットと、MySQLおよびJDBCを使った具体的な呼び出し方法を解説します。

ストアドプロシージャの主なメリット

  • 応答が高速:コンパイル済みの状態で保存されているため、呼び出すたびに即座に処理されます。
  • SQL文の一括実行:必要なSQL文をすべて1つのプロシージャにまとめ、一度に実行できます。
  • サーバー側での高速処理:クライアントよりも高速なデータベースサーバー上で動作するため、複雑なクエリも効率的に処理できます。
  • コードの重複を回避:共通処理をプロシージャ化できるほか、ストアドファンクションの呼び出しなど、追加の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    |       |
+----------+--------------+------+-----+---------+-------+

まず、Employeesテーブルへデータを挿入する「myProcedure」というプロシージャを作成します。

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プログラムは、CallableStatementを使用して上記のストアドプロシージャを呼び出します。

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 {
        // ドライバの登録
        DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        // データベースへの接続
        String mysqlUrl = "jdbc:mysql://localhost/testdb";
        Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
        System.out.println("接続が確立されました......");
        // 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();
    }
}

実行結果

接続が確立されました......

プログラム実行後にEmployeesテーブルの内容を確認すると、以下のように新しいレコードが追加されていることがわかります。

+-----------+--------+----------------+
| Name      | Salary | Location       |
+-----------+--------+----------------+
| Amit      | 3000   | Hyderabad      |
| Kalyan    | 4000   | Vishakhapatnam |
+-----------+--------+----------------+
  1. C言語のトークンとは?6つの種類とサンプルコードでわかりやすく解説

    トークンとはトークン(token)とは、コンパイラにとって意味を持つ、プログラムを構成する最小単位のことです。コンパイラはソースコードをこの最小単位へと分割し、生成されたトークンを基にコンパイルの各段階へと処理を進めていきます。トークンの種類C言語のトークンは、主に以下の6種類に分類されます。キーワード(予約語):int、return など、言語仕様によって意味が定められた語識別子:変数名や関数名など、開発者が自由に命名できる名前定数:10、3.14 など、プログラム中で値が変わらない固定値文字列:ダブルクォート( )で囲まれた文字の並び特殊記号:{ }、( )、; など、構文を区切るための記

  2. WiFi ACとは?高速通信がもたらすメリットと特徴を徹底解説

    ```html WiFi ACとは?基本概要テクノロジー市場は日々進化しており、その流れの中で登場したのがWiFi AC(IEEE 802.11ac)です。この新しい無線通信規格は、インターネットへのワイヤレス接続を実現し、より高速かつ高品質な通信を可能にします。WiFi ACは5GHz帯で動作するため、通信への干渉が少なく、160MHzでの8つのMIMOストリームに対応しています。従来のWiFi Nが4つのMIMOストリームまでしか対応していないことと比べると、大きな進化だと言えるでしょう。さらに、ビームフォーミング技術を採用することで、パフォーマンスと信号強度が向上しました。また、256-