sqlcommand에 사용되는 것보다 많은 매개 변수를 제공하려고합니다. 그 때문에 ORA 01036 예외가 발생합니다. 설명은 실제로 쿼리에서 사용되는 매개 변수 만 전달할 수 있다는 사실로 이어집니다.Oracle 클라이언트에서 선택적 sql 명령 매개 변수
어디에서나 찾을 수 없습니다. 정말 사실입니까?
sqlcommand에 사용되는 것보다 많은 매개 변수를 제공하려고합니다. 그 때문에 ORA 01036 예외가 발생합니다. 설명은 실제로 쿼리에서 사용되는 매개 변수 만 전달할 수 있다는 사실로 이어집니다.Oracle 클라이언트에서 선택적 sql 명령 매개 변수
어디에서나 찾을 수 없습니다. 정말 사실입니까?
내가 Oracle 데이터베이스에 연결하는 System.Data.SqlClient.SqlConnection를 사용하여 상황을 다시 시도하고 실패했다 ... 꽤 바보 같은 내게로 제한 보인다.
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();
이것은 당신이 올바른지 믿고 날 리드 : 오라클 쿼리에서 PARAMATERS의 수와 일치해야합니다 명령에 전달 PARAMATERS의 수를 쿼리 할 때.
a. 오라클과 협력 할 때, 매개 변수를 쿼리에서의 사용과 동일한 순서로 유지하는 것이 좋습니다. 사용중인 DLL에 따라 매개 변수는 매개 변수 이름을 기준으로하지 않고 삽입 순서에 따라 매핑됩니다.
데이브
왜 당신은 더 많은 매개 변수를 전달할까요? – GolfWolf
@ w0lf, 내 머리 꼭대기에서 - 제네릭 매개 변수 기본 클래스가 있기 때문에? 또는 매번 손으로 준비하고 싶지 않은 매개 변수가 많이 있습니다. 그것은 Postgres와 SqlServer를 위해 작동합니다 ... – IamDeveloper
@IAmDeveloper 와우, 나는 지금까지 그것을 깨닫지 못했습니다. 그냥 SQL Server에 체크하고 * 작동합니다. – GolfWolf