本文主要讲述的是用C#来调用Oracle存储过程,还有返回,相关结果集,以及函数,首先我们主要简述如何在Oracle中建立PACKAGE与PACKAGE BODY,将在这里面定义函数和存储过程返回结果集。

目前成都创新互联公司已为上千的企业提供了网站建设、域名、网站空间、绵阳服务器托管、企业网站设计、甘孜州网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
1:建立PACKAGE:
- CREATE OR REPLACE package SCOTT.pk_wt
 - is
 - type mytype is ref cursor;
 - procedure p_wt(mycs out mytype);
 - function f_get(str in varchar2)
 - return varchar2;
 - end;
 - /
 
说明:其实PACKAGE只是个声明罢了。我们在这里定义了一个Oracle存储过程返回结集和一个函数,返回字符串。
2:建立PACKAGE BODY:
- CREATE OR REPLACE package BODY SCOTT.pk_wt
 - is
 - procedure p_wt(mycs out mytype)
 - is
 - begin
 - open mycs for select * from test;
 - end p_wt;
 - function f_get(str varchar2)
 - return varchar2
 - is
 - str_temp varchar2(100) := 'good luck!';
 - begin
 - str_temp := str_temp || str;
 - return str_temp;
 - end f_get;
 - end pk_wt;
 - /
 
说明:这里建立PACKAGE BODY是具体的说明和使用,将采用什么方式实现。
C#段:
在C#中代码将分为两部分,一部分是使用函数,另外一部分是使用结果集。
定义一个连接,从WEBCONFIG里去取得:
- private OracleConnection orcn=new
 
OracleConnection(System.Configuration.
ConfigurationSettings.AppSettings["scott"]);
C#调用Oracle函数:
- OracleCommand cmd=new OracleCommand("pk_wt.f_get",orcn);
 - cmd.CommandType=CommandType.StoredProcedure;
 - OracleParameter p1=new OracleParameter("str",OracleType.VarChar,10);
 - p1.Direction=System.Data.ParameterDirection.Input;
 - p1.Value=this.TextBox1.Text;
 - OracleParameter p2=new OracleParameter("result",OracleType.VarChar,100);
 - p2.Direction=System.Data.ParameterDirection.ReturnValue;
 - cmd.Parameters.Add(p1);
 - cmd.Parameters.Add(p2);
 - orcn.Open();
 - cmd.ExecuteNonQuery();
 - orcn.Close();
 - this.Button_function.Text=p2.Value.ToString();
 
其中RESULT是系统自定义的函数返回变量,特别要注意的是,函数的参数的返回类型要指定,另外就是COMMAND类型也需要指定,另外和一般的Oracle存储过程没什么差别。
C#调用Oracle返回结果集:
  
- OracleCommand cmd=new OracleCommand("pk_wt.p_wt",orcn);
 - 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.DataGrid1.DataSource=ds;
 - this.DataGrid1.DataBind();
 
上述的相关内容就是对C#调用Oracle存储过程的描述,希望会给你带来一些帮助在此方面。
【编辑推荐】
Copyright © 2009-2022 www.wtcwzsj.com 青羊区广皓图文设计工作室(个体工商户) 版权所有 蜀ICP备19037934号