4
我正嘗試使用比它使用的參數更多的參數來提供sqlcommand。正因爲如此,我得到異常ORA 01036.說明導致我只能傳遞將在查詢中實際使用的參數。使用Oracle客戶端的可選sql命令參數
我找不到它 - 是否真的如此?看來非常愚蠢的和有限的,我...
我正嘗試使用比它使用的參數更多的參數來提供sqlcommand。正因爲如此,我得到異常ORA 01036.說明導致我只能傳遞將在查詢中實際使用的參數。使用Oracle客戶端的可選sql命令參數
我找不到它 - 是否真的如此?看來非常愚蠢的和有限的,我...
我試圖用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();
這使我相信你是正確的:查詢甲骨文,在命令必須通過在查詢PARAMATERS的數量相匹配PARAMATERS數時。
a。在使用Oracle時,我還建議您保持參數的順序與查詢中的使用順序相同。根據您使用的DLL,參數不基於參數名稱映射,而是按插入順序映射。
戴夫
你爲什麼要傳遞的參數? – GolfWolf
@ w0lf,從我頭頂開始 - 因爲我有一個泛型參數基類?或者有很多參數我不想每次手動準備。它適用於Postgres和SqlServer ... – IamDeveloper
@IAmDeveloper哇,我從來沒有意識到,直到現在。剛剛在SQL Server中進行檢查,它*可以工作。 – GolfWolf