SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

WindowsでPHPからストアドプロシージャ/ストアドファンクションを実行する

コードの単純化と高速化を実現

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード サンプルコード (2.7 KB)

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の構造と一部の内容を示します。

図1 ブックストアテーブル: テーブルの内容と構造(booksデータベースから取得)
図1 ブックストアテーブル: テーブルの内容と構造(booksデータベースから取得)

次のページ
MySQLデータベースエクステンションを使用してストアドプロシージャを呼び出す

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Octavia Andreea Anghel(Octavia Andreea Anghel)

経験豊富なPHP開発者。現在は、国内外のソフトウェア開発コンテストに参加するプログラミングチームの主任トレーナーを務める。国レベルの教育プロジェクト開発のコンサルティングも担当している。共著書に『XML technologies?XML in Java』があり、XML部分の執筆を担当。PHPやXML...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4575 2009/12/07 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング