なしSYS_REFCURSOR機能を実行することはできません私はパラメータ
listBox1.DataSource = lO.fRefCursor("priceWorx.frcBaanCompanies", null, false).Tables[0];
ようにパッケージ
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;
、これを呼び出すネットの方法でこのSYS_REFCURSOR機能を持ってここに私は関数を呼び出す方法は次のとおりです。
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 Developerでも実行されても問題ありません。
私は間違っていますか?
このメソッドが「パラメータで呼び出されたときにうまくいく」と言うと、パラメータを取る関数の例と、上記の 'fRefCursor'メソッドを使ってどのように呼び出すのか? –