MySQLでのストアドプロシージャの呼び出し
MySQL内でストアドプロシージャを呼び出すには、次のcallメソッドを使います。
call books.proc(@a); select @a;
MySQLでのストアドファンクションの作成
ファンクション(すなわち関数)を作成するときは、ストアドプロシージャとの次の違いに注意してください。
- キーワード
procedureをキーワードfunctionに置き換える - すべて
INパラメータなので、パラメータの方向を指定する必要はない - パラメータリストに続け、キーワード
RETURNSで戻り値の型を指定する BEGIN...ENDブロックは必要ない- 関数を呼び出すには、構文
select function(parameter_list)を使う
関数を作成する構文は次のとおりです。
CREATE FUNCTION function_name ([function_parameter[,...]]) RETURNS type routine_body
次の例は、計算をして整数値(int)を返す簡単なストアドファンクションです。
CREATE FUNCTION simple_operation (price int) RETURNS int RETURN price*1000
これをSQL Serverから呼び出すには、次の構文を使います。
SELECT simple_operation(5)
この例の戻り値は5000です。
PHPからストアドプロシージャを呼び出す
PHPからMySQLのストアドプロシージャ/ストアドファンクションを呼び出すには、次のデータベースエクステンションが必要です。
これらのエクステンションをインストールした後、PHPからMySQLのストアドプロシージャ/ストアドファンクションを呼び出すことができます。既に述べたように、MySQLのストアドプロシージャとファンクションは特定のデータベースに関連付けられます。以下の例では、次のSQLステートメントで作成したbooksデータベースを使用します。
create table bookstore
(id int not null auto_increment primary key,
book varchar(50),
author varchar(50),
isbn varchar(50),
price int);
図1のブックストアテーブル(bookstore)の設定に用いたSQLステートメントは次のとおりです。
INSERT INTO bookstore (id,book,author,isbn,price) VALUES (1,"Introduction to PHP","Mark User","3334-4424-334-3433",500) INSERT INTO bookstore (id,book,author,isbn,price) VALUES (2,"DHTML and CSS","Teague Sanders","4545-23-23-23-23232",1500) INSERT INTO bookstore (id,book,author,isbn,price) VALUES (3,"Introduction to PHP","Weeling Tom","4334-2323-23233-434",300) INSERT INTO bookstore (id,book,author,isbn,price) VALUES (4," Web design"," Weeling Tom"," 4334-2323-23233-434",600) INSERT INTO bookstore (id,book,author,isbn,price) VALUES (5," PHP 5"," Weeling Tom"," 444-87-67665-678678",600) INSERT INTO bookstore (id,book,author,isbn,price) VALUES (6," JavaServer Pages"," Tick Own"," 897-9898-987-099",800)
図1に、テーブルbookstoreの構造と一部の内容を示します。

