1. 程式人生 > >C#呼叫Oracle儲存過程並返回結果集

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

= new OracleCommand("GET_PERSON", conn);

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

= ParameterDirection.Output;

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

replaceprocedure GET_PERSON

(

RC1 out RC_OBJECT ,

RC2 out RC_OBJECT

)

is

begin

open RC1 forselect * from PERSON;

open RC2 forselect * from PERSON;

end GET_PERSON;