OdbcCommand.CommandText プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
データ ソースに対して実行する 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 ステートメントまたはストアド プロシージャ。 既定値は空の文字列 ("") です。
実装
注釈
プロパティが CommandType に StoredProcedure設定されている場合は、標準の 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実行操作またはフェッチ操作が実行されている場合は、 プロパティ CommandType と CommandText プロパティを設定できません。
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に設定することです。