簡體   English   中英

.NET ORA-01858:找到了一個非數字字符,其中包含數字

[英].NET ORA-01858: a non-numeric character was found where a numeric was expected

我正在嘗試構造命名參數,但收到錯誤。

無法從數據庫Oracle.DataAccess.Client.OracleException ORA-01858獲取數據:在Oracle.DataAccess.Client.OracleException.HandleErrorHelper中找到了數字所在的非數字字符...

private static void AddCriteria(IDbCommand command, string column, object value, string sqlOperator = "=")
{
    var parameter = command.CreateParameter();

    if (value is DateTime)
    {
        value = FormatSqlDate((DateTime)value);
    }

    parameter.ParameterName = DbHelper.GetParameterSql(parameter, "P" + (command.Parameters.Count + 1));
    parameter.Value = value;
    command.Parameters.Add(parameter);

    command.CommandText += string.Format(" {0} {1} {2} {3}", (command.Parameters.Count > 1 ? "AND" : "WHERE"), column, sqlOperator, parameter.ParameterName);
}

以下查詢構造:

SELECT *
FROM trade LEFT JOIN 
     findetail
     ON trade.trade = findetail.trade LEFT JOIN
     fintransact 
     ON findetail.fintransact = fintransact.fintransact
WHERE trade.trade = :P1 AND acctdate = :P2

雖然參數是

:P1 - 2298056
:P2 - TO_DATE('2014-12-31T00:00:00', 'YYYY-MM-DD"T"HH24:MI:SS')

變量只能是值。 您不能像TO_DATE這樣的函數調用作為變量中的文本。

您需要將所有SQL放入查詢文本中,並僅將實際變量(如實際時間)提取到綁定變量中。

在這種情況下,為什么不將正確解析的.NET DateTime作為值傳遞?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM