我编了一个ORACLE包,里面有一函数,该函数返回一个结果集,经测试没有问题,
我在一个WEB页面中,用C#怎样调用该函数?具体格式是什么?我如果把它当作存储过程,则会报错“没有这样的存储过程”,现贴上包的内容和C#调用部份,请各位高手指点,请给出详细代码,谢谢!!!!!
--包头
CREATE OR REPLACE PACKAGE qmys
as
type myCursor is ref cursor;
function bmysfxb1(du_year in out varchar2,du_month in out varchar2,du_dwbm varchar2)
return myCursor ;
end qmys;
--包体
CREATE OR REPLACE PACKAGE BODY qmys
as
--输入ID 返回记录集的函数
function bmysfxb1(du_year in out varchar2 ,du_month in out varchar2 ,du_dwbm varchar2)
return myCursor is
bmysfxb1 myCursor;
s_sql varchar2(200);
type fang_type is table of varchar2(200);
fang_ysmc fang_type;
mei_exception1 exception ;--用作异常变量
TYPE mei_type IS REF CURSOR;
mei_cursor mei_type;
i number(10):=0;
sqls varchar2(200); begin
--根据传递来的年、月、部门编码,来对预算执行使用情况进行分析
du_year:=ltrim(rtrim(du_year));
du_month:=ltrim(rtrim(du_month));
if du_year is null or du_month is null or du_dwbm is null or length(du_year) <>4 or length(du_month)<>2 then
raise mei_exception1;
end if;
sqls := substr(du_dwbm,0,4);
s_sql :=' select zbxx_mc from tab_ys_zbxx where dqbh=:du_dqbh';
open mei_cursor for s_sql using sqls;
return mei_cursor;
EXCEPTION
when mei_exception1 then
RAISE_APPLICATION_ERROR(-20000,'向存储过程中传入的参数有误,请检查!'||sqlerrm);
end bmysfxb1;
end qmys;
--C#中调用(格式不对呀!!,请指点呀!!) OracleDataAdapter myAdapter = new OracleDataAdapter();
OracleConnection myConnection = new OracleConnection(cn);
myConnection.Open();
DataSet mySet = new DataSet();
OracleCommand myCommand = new OracleCommand("qmys.bmysfxb1",myConnection);
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.Parameters.Add("du_year",OracleType.VarChar);
myCommand.Parameters["du_year"].Value="2004";
myCommand.Parameters.Add("du_month",OracleType.VarChar);
myCommand.Parameters["du_month"].Value="09";
myCommand.Parameters.Add("du_dwbm",OracleType.VarChar);
myCommand.Parameters["du_dwbm"].Value="1010100101";
myAdapter.SelectCommand = myCommand;
myAdapter.Fill(mySet);
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货