c调用oracle的package里面的函数和存储过程的应用
下面列举如何在 C# 中调用 ORACLE 的 PACKAGE 的东西, 主要包括 PACKAGE 的方法和 存储过程 一,首先在 ORACLE 里建立如下 PACKAGEPACKAGE 分 SPEC 和 body 两部分.1.SPEC 是声明部分. CREATE OR REPLACE PACKAGE FirstPage istype outlist is ref cursor;Procedure p_get( maxrow in number, minrow in number, return_list out outlist);function f_get(str in varchar2)return varchar2; END FirstPage;2.BODY 是功能实现部分 CREATE OR REPLACE package body FirstPage is Procedure p_get( maxrow in number, minrow in number, return_list out outlist ) is begin open return_list for select * from (select a.*,rownum rnum from IPS_WL_INNOLUXPN a where rownum=minrow; end ;Function f_get(str in varchar2)return varchar2 isstr_temp varchar2(200) := Good Luck! ;beginstr_temp := str_temp || str;return str_temp;end f_get; end FirstPage; 以上,就在 ORACLE 里面建立了一个名字叫 FIRSTPAGE 的 PACKAGE, 这个 PACKAGE 里面有一个名叫 P_GET 的存储过程,它有 3 个参数, 一个是 maxrow,minrow 是输入, result_list 是个 CURSOR, 用来存放传回的数据集 2.C# 部分代码:string connStr = “Data Source=E4MT;user id=mnt;password=mnt“;OracleConnection orcn = new OracleConnection(connStr);//C# 調用 Package 中的 FunctionOracleCommand = new OracleCommand(“FIRSTPAGE.f_get“,orcn);.CommandType = CommandType.StoredProcedure;OracleParameter p1 = new OracleParameter(“str“,OracleType.VarChar,10);p1.Direction = ParameterDirection.; p1.Value = “Andy“;OracleParameter p2 = new OracleParameter(“result“,OracleType.VarChar,100);p2.Direction = ParameterDirection.ReturnValue;.Parameters.Add(p1);.Parameters.Add(p2);orcn.Open();.cuteNonQuery();orcn.Close();//C#調用 Package 中的 Procedure = new OracleCommand(“FIRSTPAGE.p_get“,orcn);.CommandType = CommandType.StoredProcedure;p1 = new OracleParameter(“maxrow“,OracleType.Number);p1.Direction = ParameterDirection.;p1.Value = 50;p2 = new OracleParameter(“minrow“,OracleType.Number);p2.Direction = ParameterDirection.;p2.Value = 10;OracleParameter p3 = new OracleParameter(“return_list“,OracleType.Cursor);p3.Direction = ParameterDirection.Output;.Parameters.Add(p1);.Parameters.Add(p2);.Parameters.Add(p3);DataTable dt = new DataTable();OracleDataAdapter da = new OracleDataAdapter();da.Fill(dt);foreach(DataRow row in dt.Rows){}