我試圖讓我的頭在我的asp.net MVC項目中執行下面的select語句時發生了什麼問題。ORA-01460觸發器在選擇語句上不一致
public static Vessel GetVesselDetails(string vesselId, string outbound, string callnumber)
{
var vessel = new Vessel {Id = vesselId};
using (var connection = new OracleConnection(_connectionString))
{
const string query = @"SELECT * FROM OPS_REPORT.SHIP_VOYAGE WHERE SHIP_ID= :1 AND SHIP_VOYAGE.OUT_VOY_NBR= :2 AND SHIP_VOYAGE.OUT_CALL_NBR = :3";
var command = new OracleCommand(query) { Connection = connection };
command.Parameters.Add("1", OracleDbType.NVarchar2, 5).Value = vesselId;
command.Parameters.Add("2", OracleDbType.NVarchar2, 5).Value = outbound;
command.Parameters.Add("3", OracleDbType.NVarchar2, 5).Value = callnumber;
try
{
connection.Open();
OracleDataReader dr = command.ExecuteReader();
while (dr.Read())
{
vessel.Name = dr["NAME"].ToString();
vessel.LineOperator = dr["LINE_ID"].ToString();
vessel.Service = dr["SERVICE_ID"].ToString();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
if (connection.State != ConnectionState.Closed)
{
connection.Close();
}
}
}
return vessel;
}
參數傳遞觸發下面的錯誤,但他們這樣做並不一致。
「ORA-01460:未使用或不合理轉換」
例如,當我運行上述使用以下參數,它運行沒有任何問題。
string vesselId = "DES";
string outbound = "16C1";
string callnumber = "1";
但是參數更改爲以下,則返回ORA-01460異常...
string vesselId = "CGVG";
string outbound = "078E";
string callnumber = "1";
兩個選擇語句很好地工作,當我直接通過蟾蜍與上述值執行它們到數據庫視圖。這讓我更加困惑。
我確定我忽略了簡單的事情,或者以不推薦的方式處理參數聲明。任何指向正確的方式非常讚賞。
我試過在瀏覽一些關於ORA-01460錯誤信息的信息後,改變了設置參數的方式。
command.Parameters.Add(new OracleParameter("1", vesselId));
command.Parameters.Add(new OracleParameter("2", outbound));
command.Parameters.Add(new OracleParameter("3", callnumber));
不是會發生什麼情況是,我在這兩套我的問題總結上述參數發送時收到錯誤消息。
我檢查表上的數據類型爲好,它們是:
SHIP_ID -> VARCHAR2 (4 Byte)
OUT_VOY_NBR -> VARCHAR2 (5 Byte)
OUT_CALL_NBR -> VARCHAR2 (1 Byte)
所有這些都不能爲空。
在黑暗中刺中,但嘗試使用'OracleDbType.Varchar2'而不是'OracleDbType.NVarchar2',這對您的db列類型更爲正確。並且,爲了確認,您是否使用ODP.NET? – sstan
您可能還想聲明您的確切Oracle數據庫服務器版本號(全部5個數字)。 – sstan
感謝您的建議@sstan,當將OracleDbType更改爲Varchar2時,上面的兩個示例都會觸發錯誤。我正在使用Oracle.ManagedDataAccess v12.1。在Oracle數據庫10g企業版版本10.2.0.4.0上運行 – Zephire