问题已解决,贴上代码供大伙参考,谢谢楼上各位。
private void button1_Click(object sender, EventArgs e)
{
OracleConnection con = new OracleConnection(BaseCollection.getLogo());//自已定义的数据访问接口
con.Open();
OracleCommand cmd = new OracleCommand("UNFOLDBOM_LAST", con);
cmd.CommandType = CommandType.StoredProcedure;
OracleParameter p1 = new OracleParameter("V_CS", OracleType.Cursor);
OracleParameter p2 = new OracleParameter("CODE",OracleType.VarChar);
P2.Value = "test";
p1.Direction = System.Data.ParameterDirection.Output;
cmd.Parameters.Add(p1);
cmd.Parameters.Add(p2);
OracleDataAdapter da = new OracleDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds, "test");
this.dataGridView1.DataSource = ds.Tables["test"];
}
包头
create or replace package pk_wt is
type mytype is ref cursor;
procedure UNFOLDBOM_LAST(mycs out mytype);
end;
包体
CREATE OR REPLACE package BODY pk_wt is
procedure UNFOLDBOM_LAST(mycs out mytype) is
begin
open mycs for
select * from BMS_BOM; --这边是不是可以简化。?
end;
end;
存储过程
CREATE OR REPLACE PROCEDURE UNFOLDBOM_LAST(CODE VARCHAR2,V_CS OUT SYS_REFCURSOR) as
BEGIN
--数据的处理......
OPEN V_CS FOR select * from bms_wo ;--实际返回的是这个表的数据。我不大明白
请liangxian帮我看看我这个哪里有问题,
下面是建包的
CREATE OR REPLACE package SCOTT.pk_wt
is
type mytype is ref cursor;
procedure p_wt(mycs out mytype);
return varchar2;
end;
/
CREATE OR REPLACE package BODY SCOTT.pk_wt
is
procedure p_wt(mycs out mytype)
is
begin
open mycs for select * from TMP_HIS_PPTN_JP;
end p_wt;
end pk_wt;
/
再下面是C#语句,可是执行总是报错
OracleConnection con = new OracleConnection(BaseCollection.getLogo());//自已定义的数据访问接口
con.Open();
OracleCommand cmd = new OracleCommand("pk_wt.p_wt", con);
cmd.CommandType = CommandType.StoredProcedure;
OracleParameter p1 = new OracleParameter("mycs", OracleType.Cursor);
p1.Direction = System.Data.ParameterDirection.Output;
cmd.Parameters.Add(p1);
OracleDataAdapter da = new OracleDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds, "test");
this.dataGridView1.DataSource = ds.Tables[0];