[+/-]
MySQL バージョン 5 のリリースにより、MySQL サーバは、SQL 2003 ストアド プロシージャ シンタックスでストアド プロシージャをサポートするようになりました。
ストアド プロシージャは、サーバで保管が可能な SQL 文です。これが実行されると、クライアントは各ステートメントを発行し続ける必要がなくなり、代わりにストアド プロシージャを参照します。
ストアド プロシージャは、次のような状況で特に利点があります :
複数のクライアントが、複数の言語で書かれている場合、または異なるプラットフォームで使用するが、同じデータベース操作を行う必要がある場合。
セキュリティを最優先する場合。例えば銀行では、すべての通常的なオペレーションにストアド プロシージャを使用します。ストアド プロシージャは安全で安定した環境を供給し、プロシージャは各オペレーションが正しくログされるよう保証します。このようなセットアップでは、アプリケーションとユーザはデータベース テーブルへ直接アクセスされる心配がなく、特定のストアド プロシージャのみを実行します。
Connector/NET は、MySqlCommand
オブジェクトを通したストアド
プロシージャの呼び出しをサポートします。MySqlCommand.Parameters
コレクションの使用を通じて、MySQL ストアド
プロシージャにデータを受け渡しすることができます。
ストアド
プロシージャを呼び出す際、コマンド
オブジェクトは追加の SELECT
呼び出しでストアド
プロシージャのパラメータを決定します。プロシージャを呼び出すユーザは、パラメータの検証を行うために、mysql.proc
テーブルの SELECT
権限を取得していなければなりません。権限を持たないと、プロシージャを呼び出す際にエラーが発生します。
このセクションには、Stored Procedures の作成の詳しい情報は記載されていません。それらの詳細は、http://dev.mysql.com/doc/mysql/en/stored-procedures.html をご覧ください。
Connector/NET でのストアド
プロシージャの使用例を示したアプリケーションのサンプルは、Connector/NET
インストレーションの Samples
ディレクトリでご覧いただけます。
MySQL のストアド
プロシージャは、様々なツールを使用して作成することができます。まず、ストアド
プロシージャは mysql
コマンドラインのクライアントを使って作成できます。次に、MySQL
Query Browser
GUI
クライアントでも作成できます。最後に、MySqlCommand
オブジェクトの .ExecuteNonQuery
メソッドでも作成することができます :
Visual Basic 例 :
Overloads Public Sub New()
C# 例 :
public MySqlConnection();
Connector/NET でストアド プロシージャを作成する際、コマンドラインや GUI クライアントとは異なり、特別な区切り符号を指定する必要がないのも特筆するべき点です。
Connector/NET を使用してストアド
プロシージャを呼び出すには、MySqlCommand
オブジェクトを作成し、ストアド
プロシージャ名を .CommandText
プロパティとして渡します。.CommandType
プロパティを
CommandType.StoredProcedure
に設定してください。
ストアド
プロシージャに名前が付けられたら、ストアド
プロシージャのすべてのパラメータにつき、MySqlCommand
パラメータをひとつ作成します。IN
パラメータは、パラメータ名と値を含むオブジェクトで定義され、OUT
パラメータはパラメータ名と戻される予定のデータタイプで定義されます。すべてのパラメータは、パラメータの方向が定義されなければなりません。
パラメータを定義した後、MySqlCommand.ExecuteNonQuery()
メソッドを使用して、ストアド
プロシージャを呼び出してください :
Visual Basic 例 :
Overloads Public Sub New( _ ByVal connectionString As String _ )
C# 例 :
public MySqlConnection( stringconnectionString );
ストアド
プロシージャが呼び出されたら、MySqlConnector.Parameters
コレクションの .Value
プロパティを使って、出力パラメータの値を取り出すことができます。