ストアド プロシージャでのステートメントの使用

JDBC ドライバーのダウンロード

ストアド プロシージャは、データベースのプロシージャです。他のプログラミング言語のプロシージャと似ていますが、ストアド プロシージャはデータベースそのものに格納されます。 SQL Server では、ストアド プロシージャは、Transact-SQL を使用するか、または共通言語ランタイム (CLR)、および Visual Studio のプログラミング言語の 1 つ (Visual Basic、C# など) を使用して作成できます。 通常、SQL Server ストアド プロシージャでは次のことが可能です。

  • 入力パラメーターを受け取り、呼び出し元のプロシージャまたはバッチに出力パラメーターの形式で複数の値を返す。

  • 他のプロシージャの呼び出しなど、データベース内での操作を実行するプログラミング ステートメントを含む。

  • 呼び出し元のプロシージャまたはバッチにステータス値を返し、成功、失敗、および失敗の原因を示す。

注意

SQL Server ストアド プロシージャの詳細については、SQL Server オンライン ブックの「ストアド プロシージャについて」を参照してください。

SQL Server データベース内のデータをストアド プロシージャで操作するために、SQL Server 用 Microsoft JDBC ドライバー には、SQLServerStatementSQLServerPreparedStatement、および SQLServerCallableStatement の各クラスが用意されています。 使用するクラスは、ストアド プロシージャで IN (入力) パラメーターと OUT (出力) パラメーターのどちらが必要かによって異なります。 ストアド プロシージャで IN パラメーターも OUT パラメーターも必要ない場合、SQLServerStatement クラスを使用できます。ストアド プロシージャが何度も呼び出される場合、または IN パラメーターのみを必要とする場合は、SQLServerPreparedStatement クラスを使用できます。 ストアド プロシージャで IN パラメーターと OUT パラメーターの両方が必要な場合、SQLServerCallableStatement クラスを使用する必要があります。 SQLServerCallableStatement クラスを使用するオーバーヘッドが必要なのは、ストアド プロシージャで OUT パラメーターが必要な場合だけです。

Note

ストアド プロシージャは、更新数および複数の結果セットを返すこともできます。 詳細については、「更新数があるストアド プロシージャの使用」と「複数の結果セットの使用」を参照してください。

JDBC ドライバーを使用してパラメーターがあるストアド プロシージャを呼び出す場合は、call SQL エスケープ シーケンスを、SQLServerConnection クラスの prepareCall メソッドと一緒に使用する必要があります。 call エスケープ シーケンスの完全な構文は次のとおりです。

{[?=]call procedure-name[([parameter][,[parameter]]...)]}

Note

call とその他の SQL エスケープ シーケンスの詳細については、「SQL エスケープ シーケンスの使用」を参照してください。

このセクションのトピックでは、JDBC ドライバーおよび SQL Server SQL エスケープ シーケンスを使用して、call ストアド プロシージャを呼び出す方法を説明します。

このセクションの内容

トピック 説明
パラメーターのないストアド プロシージャの使用 JDBC ドライバーを使用して、入力または出力パラメーターのないストアド プロシージャを実行する方法を説明します。
入力パラメーターがあるストアド プロシージャの使用 JDBC ドライバーを使用して、入力パラメーターがあるストアド プロシージャを実行する方法を説明します。
出力パラメーターがあるストアド プロシージャの使用 JDBC ドライバーを使用して、出力パラメーターのないストアド プロシージャを実行する方法を説明します。
状態の戻り値があるストアド プロシージャの使用 JDBC ドライバーを使用して、状態の戻り値があるストアド プロシージャを実行する方法を説明します。
更新数があるストアド プロシージャの使用 JDBC ドライバーを使用して、更新数を返すストアド プロシージャを実行する方法を説明します。

関連項目

JDBC ドライバーでのステートメントの使用