OdbcCommand.CommandText プロパティ

定義

データ ソースに対して実行する SQL ステートメントまたはストアド プロシージャを取得または設定します。

public:
 virtual property System::String ^ CommandText { System::String ^ get(); void set(System::String ^ value); };
public:
 property System::String ^ CommandText { System::String ^ get(); void set(System::String ^ value); };
public override string CommandText { get; set; }
public string CommandText { get; set; }
member this.CommandText : string with get, set
Public Overrides Property CommandText As String
Public Property CommandText As String

プロパティ値

実行する SQL ステートメントまたはストアド プロシージャ。 既定値は空の文字列 ("") です。

実装

注釈

プロパティが CommandTypeStoredProcedure設定されている場合は、標準の CommandText ODBC ストアド プロシージャのエスケープ シーケンスを使用して プロパティを設定する必要があります。 をCommandTextストアド プロシージャの名前に設定しても、他の.NET Framework データ プロバイダーの場合と同様に機能しません。

外部結合やスカラー関数呼び出しなど、多くの言語機能は、通常、データ ソースによって実装されます。 これらの機能の構文でさえ、一般にデータ ソース固有です。 したがって、ODBC は、次の言語機能の標準構文を含むエスケープ シーケンスを定義します。

  • 日付、時刻、タイムスタンプ、および datetime 間隔リテラル

  • 数値、文字列、データ型変換関数などのスカラー関数

  • LIKE 述語エスケープ文字

  • 外部結合

  • プロシージャ呼び出し

ODBC で使用されるエスケープ シーケンスは次のとおりです。

{extension}  

このエスケープ シーケンスは、ODBC ドライバーによって認識および解析されます。 次に、エスケープ シーケンスをデータ ソース固有の文法に置き換えます。

プロシージャは、データ ソースに格納されている実行可能オブジェクトです。 これは通常、プリコンパイルされた 1 つ以上の SQL ステートメントです。 プロシージャを呼び出すためのエスケープ シーケンスは 次のとおりです。

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

where procedure-name はプロシージャの名前を指定し、 parameter プロシージャ パラメーターを指定します。

コマンドは、 ExecuteReader Execute メソッドのいずれかを呼び出すときに、このストアド プロシージャを実行します (例: または ExecuteNonQuery)。

現在の接続で Connection実行操作またはフェッチ操作が実行されている場合は、 プロパティ CommandTypeCommandText プロパティを設定できません。

ODBC.NET プロバイダーでは、 が にText設定されている場合CommandType、SQL ステートメントまたは によってOdbcCommand呼び出されるストアド プロシージャにパラメーターを渡すための名前付きパラメーターはサポートされていません。 この場合は、疑問符 (?) プレースホルダーを使用する必要があります。 次に例を示します。

SELECT * FROM Customers WHERE CustomerID = ?  

したがって、 にオブジェクトを追加OdbcParameterCollectionするOdbcParameter順序は、 パラメーターの疑問符プレースホルダーの位置に直接対応している必要があります。

パラメーターに null 値が含まれている場合、.NET Framework Data Provider for ODBC は引き続きそのパラメーターをバインドしますが、null 値ではなく、SQL_DEFAULT_PARAMを使用して定義されている場合は既定のパラメーターを使用します。 たとえば、次のようになります OdbcParameterCollection

{1, null, 2}  

プロパティに CommandText 渡されます。

{call sp(?, ?, ?)}  

では、.NET Framework Data Provider for ODBC では、最初のパラメーターを値 1 に、3 番目のパラメーターを値 2 にバインドし、2 番目のパラメーターを SQL_DEFAULT_PARAMとしてバインドします。 ただし、この動作はドライバーに依存します。 ドライバーがこの機能をサポートしていない場合は、 パラメーターの値を渡さないでください。 たとえば、 を使用します OdbcParameterCollection

{1, 2}  

プロパティを CommandText 次のように設定します。

{call sp(?, null, ?)}  

注意

パラメーターを省略した場合でも、他のパラメーターから区切られたコンマが表示される必要があります。 入力パラメーターまたは入出力パラメーターを省略すると、プロシージャはそのパラメーターの既定値を使用します。 入力パラメーターまたは入出力パラメーターの既定値を指定するもう 1 つの方法は、パラメーターにバインドされている長さ/インジケーター バッファーの値をSQL_DEFAULT_PARAMに設定することです。

適用対象

こちらもご覧ください