この記事では、A2ホスティングアカウントでMySQLに保存された関数とプロシージャを作成して実行する方法について説明します。保存された関数とプロシージャは、さまざまなシナリオで使用できます。たとえば、適切に設計された保存された関数とプロシージャは、データベースのセキュリティを強化し、データの整合性を向上させ、パフォーマンスを向上させることができます。
MySQLの保存された関数は、データを操作および処理するための強力で柔軟な方法を提供します。 MySQLを使用する任意のA2ホスティングサーバーで保存された関数を定義して実行できます。
保存された関数の基本的な例を示すために、テスト目的で使用できるデータベースを作成することから始めましょう。次のSQLステートメントで、 usernameを置き換えます。 アカウントのユーザー名:
CREATE DATABASE username_test;以前のSQLコマンド(および次のSQLコマンド)は、MySQLツールを使用してコマンドラインから実行するか、phpMyAdminを使用してWebブラウザーで実行できます。
phpMyAdminを使用している場合は、名前 username をクリックします _testを使用して、データベースを選択します。それ以外の場合、mysqlコマンドラインプログラムを使用している場合は、次のSQLステートメントを入力します。
USE username_test;
次に、ユーザー名でテーブルを作成します _test 製品という名前のデータベース 。これを行うには、次のSQLステートメントを実行します。
CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));
次のSQLステートメントは、いくつかのサンプルデータを製品に追加します。 テーブル:
INSERT INTO products (prod_name, prod_cost, prod_price) VALUES ('Basic Widget',5.95,8.35),('Micro Widget',0.95,1.35),('Mega Widget',99.95,140.00);>
使用するデータベースとテーブルができたので、ストアド関数を作成する準備が整いました。 calcProfitという名前の関数を作成しましょう 。この関数は、コストと何かの価格という2つの入力パラメーターを取ります。価格からコストを差し引いて利益を計算し、その値を呼び出し元の式に返します。
このストアド関数を作成するには、次のMySQLステートメントを実行します。
DELIMITER $$ CREATE FUNCTION calcProfit(cost FLOAT, price FLOAT) RETURNS DECIMAL(9,2) BEGIN DECLARE profit DECIMAL(9,2); SET profit = price-cost; RETURN profit; END$$ DELIMITER ;区切り文字 これらのステートメントの先頭にあるコマンドは、MySQLが関数定義をすぐに処理するのを防ぎます。 区切り文字 これらのステートメントの最後にあるコマンドは、処理を通常に戻します。
これで、データベースクエリでストアド関数を実行できます。次のSQLステートメントは、これを行う方法を示しています。
SELECT *, calcProfit(prod_cost,prod_price) AS profit FROM products;
このSQLステートメントは次の結果を返します。
+---------+--------------+-----------+------------+--------+ | prod_id | prod_name | prod_cost | prod_price | profit | +---------+--------------+-----------+------------+--------+ | 1 | Basic Widget | 5.95 | 8.35 | 2.40 | | 2 | Micro Widget | 0.95 | 1.35 | 0.40 | | 3 | Mega Widget | 99.95 | 140 | 40.05 | +---------+--------------+-----------+------------+--------+
ご覧のとおり、 calcProfit 関数は、テーブル内の各製品の利益(価格からコストを引いたもの)を自動的に計算します。
ストアドプロシージャは、ストアド関数と混同されることがありますが、いくつかの重要な点で異なります。たとえば、ストアドプロシージャは、 CALLを使用して呼び出す必要があります。 一方、格納された関数はSQL式で直接使用できます。 MySQLを使用する任意のA2ホスティングサーバーでストアドプロシージャを定義して実行できます。
次のMySQLステートメントは、 procedureTestという名前の非常に基本的なストアドプロシージャを作成する方法を示しています。 。この手順では、製品の簡単な検索を実行します 上記のストアド関数の例で使用したテーブル。このプロシージャはあまり実用的ではありませんが、ストアドプロシージャを宣言するための正しい構文と構造を示しています。
DELIMITER $$ CREATE PROCEDURE procedureTest() BEGIN SELECT prod_name FROM products; END$$ DELIMITER ;
ストアドプロシージャを実行するには、次のMySQLステートメントを使用します。
CALL procedureTest() \GphpMyAdminを使用している場合は、 \ Gなしで前のMySQLステートメントを入力します 最後にオプション。
MySQLのストアドプロシージャと関数の詳細については、http://dev.mysql.com/doc/refman/5.0/en/create-procedure.htmlにアクセスしてください。