У меня есть эта функция sys_refcursor в пакете
function frcBaanCompanies return SYS_REFCURSOR is
x sys_refcursor;
begin
open x for select t$comp, t$cpnm from baan.tttaad100000 order by t$comp;
return x;
end;
и метод net, вызывающий это так
listBox1.DataSource = lO.fRefCursor("priceWorx.frcBaanCompanies", null, false).Tables[0];
Вот как я вызываю функцию:
public DataSet fRefCursor(String refCursorName, IDictionary<string, string> prms, bool leaveConnectionOpen = true)
{
try
{
using (OracleCommand cmd = new OracleCommand("", conn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = refCursorName;
if (prms!=null) SetupParams(refCursorName, cmd, prms);
using (OracleDataAdapter da = new OracleDataAdapter(cmd))
{
if (conn.State != ConnectionState.Open)
{
conn.Open();
cmd.Connection = conn;
}
using (DataSet ds = new DataSet())
{
da.Fill(ds);
return ds;
}
}
}
}
catch (Exception ex)
{
Debugger.Break();
Debug.WriteLine(ex);
return null;
}
finally
{
if (!leaveConnectionOpen) conn.Close();
}
}
Тот же метод отлично работает при вызове с параметрами (некоторые другие функции курсора, но не работает с
ORA-06550: строка 1, столбец 7:
PLS-00221: «FRCBAANCOMPANIES» не является процедурой или не определена
ORA-06550: строка 1, колонка 7:
PL / SQL: оператор игнорируется
отлично работает, когда выполняется в (Oracle) SQL-разработчик тоже ..
Что я делаю не так?