C#呼叫Oracle儲存過程並返回結果集
1.建立一個儲存過程:
createorreplaceprocedure GET_PERSON
(
RC1 outsys_refcursor,
RC2 outsys_refcursor
)
is
begin
open RC1 for select * from PERSON;
open RC2 for select * from PERSON;
end GET_PERSON;
2.C#程式碼
OracleConnection conn = new OracleConnection("Data Source=XXX;User Id=scott;Password=tiger");
OracleCommand cmd
cmd.CommandType = CommandType.StoredProcedure;
OracleParameter param = new OracleParameter("RC1", OracleType.Cursor);
param.Direction = ParameterDirection.Output;
cmd.Parameters.Add(param);
param = new OracleParameter("RC2", OracleType.Cursor);
param.Direction
cmd.Parameters.Add(param);
OracleDataAdapter adapter = new OracleDataAdapter(cmd);
DataSet ds = new DataSet();
adapter.Fill(ds);
OK!
如果是Oracle9之前的版本,需要定義包含REF CURSOR的包.
例如:
createorreplacepackage GLOBAL_OBJECT is
type RC_OBJECT isrefcursor;
end GLOBAL_OBJECT;
createor
(
RC1 out RC_OBJECT ,
RC2 out RC_OBJECT
)
is
begin
open RC1 forselect * from PERSON;
open RC2 forselect * from PERSON;
end GET_PERSON;