OracleParameter クラス
アセンブリ: System.Data.OracleClient (system.data.oracleclient.dll 内)

Public NotInheritable Class OracleParameter Inherits DbParameter Implements ICloneable, IDbDataParameter, IDataParameter
public ref class OracleParameter sealed : public DbParameter, ICloneable, IDbDataParameter, IDataParameter

Microsoft OLE DB Provider for Oracle (MSDAORA) と ODBC .NET Framework データ プロバイダを使用して Oracle データベースに対するクエリを実行する場合、LIKE 句を使用して固定長フィールドの値を問い合わせると、期待される一致したデータがすべて返されないことがあります。これは、Oracle によって LIKE 句の固定長フィールドの値との比較が行われるときに、末尾の空白を含めて、文字列の全長にわたって比較が行われるからです。たとえば、Oracle データベースのテーブルに char(3) として定義されている Field1 という名前のフィールドが存在し、そのテーブルの行の 1 つに "a" という値を入力した場合、次のコードでは該当する行が返されません。
Dim queryString As String = "SELECT * FROM Table1 WHERE Field1 LIKE ?" Dim command As OleDbCommand = New OleDbCommand(queryString, connection) command.Parameters.Add("@p1", OleDbType.Char, 3).Value = "a" Dim reader As OleDbDataReader = command.ExecuteReader()
string queryString = "SELECT * FROM Table1 WHERE Field1 LIKE ?"; OleDbCommand command = new OleDbCommand(queryString, connection); command.Parameters.Add("@p1", OleDbType.Char, 3).Value = "a"; OleDbDataReader reader = command.ExecuteReader();
これは、Oracle では、3 の固定長に合わせるために "a" に続けて空白を埋めて、列値を "a " として格納しているからです。Oracle は、固定長フィールドの LIKE 比較において、これをパラメータ値 "a" と一致しているとは見なしません。
この問題を解決するには、パーセント ("%") ワイルドカード文字をパラメータ値 ("a%") に追加するか、または代わりに SQL = 比較を使用します。

OracleDataAdapter の OracleParameterCollection を使用して、OracleParameter の複数のインスタンスを作成する例を次に示します。これらのパラメータを使用して、データベースからデータを選択し、DataSet にデータを格納します。この例は、DataSet および OracleDataAdapter が、正しいスキーマ、コマンド、および接続で既に作成されていることを前提にしています。

System.MarshalByRefObject
System.Data.Common.DbParameter
System.Data.OracleClient.OracleParameter


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- OracleParameter クラスのページへのリンク