1818IP-服务器技术教程,云服务器评测推荐,服务器系统排错处理,环境搭建,攻击防护等

当前位置:首页 - 数据库 - 正文

君子好学,自强不息!

C#来调用Oracle存储过程实操

2022-11-25 | 数据库 | gtxyzz | 779°c
A+ A-

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

1:建立PACKAGE:

CREATEORREPLACEpackageSCOTT.pk_wt 
is 
typemytypeisrefcursor; 
procedurep_wt(mycsoutmytype); 
functionf_get(strinvarchar2) 
returnvarchar2; 
end; 
/

说明:其实PACKAGE只是个声明罢了。我们在这里定义了一个Oracle存储过程返回结集和一个函数,返回字符串。

2:建立PACKAGE BODY:

CREATEORREPLACEpackageBODYSCOTT.pk_wt 
is 
procedurep_wt(mycsoutmytype) 
is 
begin 
openmycsforselect*fromtest; 
endp_wt; 
functionf_get(strvarchar2) 
returnvarchar2 
is 
str_tempvarchar2(100):='goodluck!'; 
begin 
str_temp:=str_temp||str; 
returnstr_temp; 
endf_get; 
endpk_wt; 
/ 

说明:这里建立PACKAGE BODY是具体的说明和使用,将采用什么方式实现。

C#段:

在C#中代码将分为两部分,一部分是使用函数,另外一部分是使用结果集。

定义一个连接,从WEBCONFIG里去取得:

privateOracleConnectionorcn=new
OracleConnection(System.Configuration.
ConfigurationSettings.AppSettings["scott"]);

C#调用Oracle函数:

OracleCommandcmd=newOracleCommand("pk_wt.f_get",orcn); 
cmd.CommandType=CommandType.StoredProcedure; 
OracleParameterp1=newOracleParameter("str",OracleType.VarChar,10); 
p1.Direction=System.Data.ParameterDirection.Input; 
p1.Value=this.TextBox1.Text; 
OracleParameterp2=newOracleParameter("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返回结果集:

OracleCommandcmd=newOracleCommand("pk_wt.p_wt",orcn); 
cmd.CommandType=CommandType.StoredProcedure; 
OracleParameterp1=newOracleParameter("mycs",OracleType.Cursor); 
p1.Direction=System.Data.ParameterDirection.Output; 
cmd.Parameters.Add(p1); 
OracleDataAdapterda=newOracleDataAdapter(cmd); 
DataSetds=newDataSet(); 
da.Fill(ds,"test"); 
this.DataGrid1.DataSource=ds; 
this.DataGrid1.DataBind();

本文来源:1818IP

本文地址:https://www.1818ip.com/post/11502.html

免责声明:本文由用户上传,如有侵权请联系删除!

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。