無料PHPプログラム

MySQL 5.1 リファレンスマニュアル :: 17 ストアドプロシージャとファンクション
« 16.7 MySQL Conformance and Compatibility

17.1 ストアドルーチンとグラントテーブル »
Section Navigation      [Toggle]
  • はじめに
  • 1 一般情報
  • 2 MySQL のインストールと更新
  • 3 MySQL プログラムの使用
  • 4 データベース管理
  • 5 レプリケーション
  • 6 最適化
  • 7 クライアントプログラムとユーティリティ プログラム
  • 8 言語構造
  • 9 キャラクタセットサポート
  • 10 データタイプ
  • 11 関数と演算子
  • 12 SQL ステートメント構文
  • 13 ストレージエンジンとテーブルタイプ
  • 14 MySQL Cluster
  • 15 パーティショニング
  • 16 Spatial Extensions
  • 17 ストアドプロシージャとファンクション
    • 17.1 ストアドルーチンとグラントテーブル
    • 17.2 ストアドルーチン構文
    • 17.3 ストアドプロシージャ、ファンクション、トリガ並びにLAST_INSERT_ID()
    • 17.4 ストアドルーチンとトリガのバイナリログ
  • 18 トリガ
  • 19 Event Scheduler
  • 20 ビュー
  • 21 INFORMATION_SCHEMA データベース
  • 22 精密計算
  • 23 APIとライブラリー
  • 24 MySQL コネクタ
  • 25 Extending MySQL
  • A Frequently Asked Questions About MySQL 5.1
  • B Errors, Error Codes, and Common Problems
  • C MySQL Change History
  • D 制限と規制
  • E Credits
  • 目次

第17章 ストアドプロシージャとファンクション

目次

17.1. ストアドルーチンとグラントテーブル
17.2. ストアドルーチン構文     [+/-]
17.2.1. CREATE PROCEDUREおよびCREATE FUNCTION 構文
17.2.2. ALTER PROCEDURE および ALTER FUNCTION 構文
17.2.3. DROP PROCEDURE および DROP FUNCTION 構文
17.2.4. CALLステートメント構文
17.2.5. BEGIN ... END 複合ステートメント構文
17.2.6. DECLAREステートメント用構文
17.2.7. ストアドルーチン内の変数
17.2.8. 条件とハンドラ
17.2.9. カーソル
17.2.10. フローコントロール・コンストラクト
17.3. ストアドプロシージャ、ファンクション、トリガ並びにLAST_INSERT_ID()
17.4. ストアドルーチンとトリガのバイナリログ

ストアドルーチン(プロシージャとファンクション)が MySQL 5.1ではサポートされています。ストアドプロシージャはサーバが保存することができるSQLステートメントの組です。これが実行されると、クライアントは各ステートメントを発行し続ける必要がなくなり、代わりにストアドプロシージャを参照します。

MySQL中に保存されているルーチンとその利用に関する一般質問に対する答えは、項A.4. 「MySQL 5.1 FAQ ? Stored Procedures」で見ることができます。更に、ストアドルーチンに関する一般的な質問に対する答えについては、項A.6. 「MySQL 5.1 FAQ ? Stored Routines, Triggers, and Replication」をご参照ください。

ストアドルーチンが特に有用な幾つかの状況:

  • 複数のクライアントアプリケーションが、複数の言語で書かれている場合、または異なるプラットフォームで作動するが、同じデータベースオペレーションを行う必要がある場合。

  • セキュリティを最優先する場合。例えば、銀行はすべての共通オペレーションにストアドプロシージャとファンクションを使います。これは一貫して安全な環境を提供するので、ルーチンは各オペレーションが適切にログされていることを保証します。このようなセットアップでは、アプリケーションとユーザは直接データベーステーブルにアクセス権は無く、特定のストアドルーチンのみ実行することができます。

サーバとクライアント間の通信を減らすことができるので、ストアドルーチンは性能を向上させます。より多くの作業がサーバ側で実行され、クライアント(アプリケーション)側では、より少ない作業が実行されるので、欠点はこれがデータベースサーバ上の負荷を増やすということです。(Web サーバのような)多くのクライアントマシンに対して、1つあるいは少数のデータベースサーバによってメンテナンスされる場合、これを考慮に入れてください。

ストアドルーチンはユーザがデータベースサーバの中にファンクションライブラリーを持つことも許します。内部にこのようなデザインを許容する(例えば、クラスを使うことによって)最近のアプリケーション言語が共有している特徴です。これらのクライアントアプリケーション言語の特徴を使用することは、データベースの使用範囲の外でもプログラマーにとって有益です。

MySQLはストアドルーチンに対して、IBMのDB2にも使われているSQL:2003構文に準じています。

ストアドルーチンのMySQLへの実装は進行途中です。この章で述べたすべての構文はサポートされており、全ての制約や拡張は適切文書化されます。ストアドルーチンの使用に対する制限については、項D.1. 「ストアド ルーチンとトリガの規制」を参照してください。

ストアドルーチンのバイナリ ログ実行については、項17.4. 「ストアドルーチンとトリガのバイナリログ」を参照してください。

再帰的なストアドプロシージャは、デフォルトで無効化されていますが、max_sp_recursion_depthサーバシステム変数をゼロの値に設定することによって、サーバ上で有効化することができます。詳細については、項4.2.3. 「システム変数」 をご参照してください。

保存されたファンクションは再帰的にはなり得ません。項D.1. 「ストアド ルーチンとトリガの規制」 を参照してください。

Copyright c 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates

無料CGI PHPスクリプト | 新着情報スクリプト | 営業日カレンダー | PHPマニュアル | MySQLマニュアル | PEARマニュアル

Copyright (c) 2010 jmcodex.com All rights reserved.