使用するよりも多くのパラメーターを sqlcommand にフィードしようとしています。そのため、例外 ORA 01036 が発生しています。この説明から、クエリで実際に使用されるパラメーターしか渡すことができないという事実がわかりました。
どこにもありません - 本当に本当ですか? それはかなり愚かで私に限られているようです...
使用するよりも多くのパラメーターを sqlcommand にフィードしようとしています。そのため、例外 ORA 01036 が発生しています。この説明から、クエリで実際に使用されるパラメーターしか渡すことができないという事実がわかりました。
どこにもありません - 本当に本当ですか? それはかなり愚かで私に限られているようです...
System.Data.SqlClient.SqlConnection を使用して Oracle データベースに接続しようとしましたが、失敗しました。
System.Data.OracleClient.OracleConnection を使用して、パラメーターの有無にかかわらずクエリをテストできました。以下のコードは、コメント化されていない「string sql ...」で成功しています。コメントされた「string sql」は、質問で言及されているのと同じエラーに遭遇します。
StringBuilder sb = new StringBuilder ();
string sql = "SELECT CASE_ID, CLAIM_NR, CLAIM_PHS_CD FROM TABLENAME WHERE CASE_ID = :ci";
//string sql = "SELECT CASE_ID, CLAIM_NR, CLAIM_PHS_CD FROM TABLENAME";
using ( OracleConnection connection = new OracleConnection ( RegistryConnectionInformation.GetDBConnString () ) )
{
OracleParameter ci = new OracleParameter();
ci.ParameterName = "ci";
ci.Value = "12345";
OracleCommand command = new OracleCommand ( sql, connection );
command.Parameters.Add ( ci );
connection.Open ();
OracleDataReader reader = command.ExecuteReader ();
try
{
while ( reader.Read () )
{
sb.Append ( string.Format ( "{0} - {1} - {2}\n", reader [ 0 ], reader [ 1 ], reader [ 2 ] ) );
}
}
catch ( Exception ex )
{
sb.Append ( string.Format ( "{0}\n\n{1}", ex.Message, ex.StackTrace ) );
}
finally
{
reader.Close ();
}
}
return sb.ToString ();
これは、あなたが正しいと私に信じさせます.Oracleにクエリを実行するとき、コマンドで渡されるパラメーターの数は、クエリのパラメーターの数と一致する必要があります。
を。Oracle を使用する場合は、パラメーターをクエリでの使用と同じ順序に保つこともお勧めします。使用している DLL によっては、パラメーターはパラメーター名に基づいてマップされるのではなく、挿入順にマップされます。
デイブ