【发布时间】:2017-09-14 20:05:35
【问题描述】:
我有一个名为
的存储过程GET_CLIENT(IN VARCHAR2, IN VARCHAR2, OUT SYS REF_CURSOR)
我正在尝试将他们的结果存储在ConnectAndQuery 数据表中。
导致这个错误:
System.Data.Odbc.OdbcException: 错误 [42000] [Microsoft][Oracle ODBC 驱动程序][Oracle]
ORA-00900: 无效的 SQL 语句在 ConexionBD.ConnectAndQuery(String layerName, Decimal idElemento, String idElementoString, String conexion)。
我的代码:
public DataTable ConnectAndQuery(string layerName, decimal idElemento, string idElementoString, string conexion)
{
Logger.Debug("App_Code/ConexionBD.cs: using (OdbcConnection connection = new OdbcConnection(Driver={Microsoft ODBC for Oracle}; + conexion ");
using (OdbcConnection conn = new OdbcConnection(conexion))
{
try
{
using (OdbcCommand Command = new OdbcCommand("{ call PKG_GEONET_REPORTS.GET_ORDINARY_CLIENT(?, ?, ?) }", conn))
{
Command.CommandType = CommandType.StoredProcedure;
Command.Parameters.Add("client_in", OracleType.VarChar).Value = idElemento.ToString();
Command.Parameters.Add("layer_in", OracleType.VarChar).Value = layerName;
Command.Parameters.Add("client_data", OracleType.Cursor).Direction = ParameterDirection.Output;
using (OdbcDataAdapter da = new OdbcDataAdapter(Command))
{
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
}
}
catch (Exception ex)
{
throw (ex);
}
}
}
【问题讨论】:
-
您是否调试并检查了哪一行代码引发了异常以及异常的确切消息是什么?
-
你真的需要 OdbcCommand 吗?不能使用 OracleCommand 吗?
-
抛出发生在那里:da.Fill(ds, "result_name"); (结果名称??????)。 OracleCommand 没问题
-
那里需要哪些参数?