C#调用ORACLE存储过程返回结果集及函数
ORACLE段:
首先在ORACLE建立PACKAGE和PACKAGE BODY,將在這里面定義函數(shù)和存儲過程返回結(jié)果集。
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只是個聲明罷了。我們在這里定義了一個存儲過程返回結(jié)集和一個函數(shù),返回字符串。
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是具體的說明和使用,將采用什么方式實現(xiàn)。。
C#段:
在C#中代碼將分為兩部分,一部分是使用函數(shù),另外一部分是使用結(jié)果集。
定義一個連接,從WEBCONFIG里去取得:
private OracleConnection orcn=new OracleConnection(System.Configuration.ConfigurationSettings.AppSettings["scott"]);
C#調(diào)用ORACLE函數(shù):
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是系統(tǒng)自定義的函數(shù)返回變量,特別要注意的是,函數(shù)的參數(shù)的返回類型要指定,另外就是COMMAND類型也需要指定,另外和一般的存儲過程沒什么差別。
C#調(diào)用ORACLE返回結(jié)果集:
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();
轉(zhuǎn)載于:https://www.cnblogs.com/builderman/articles/1224173.html
總結(jié)
以上是生活随笔為你收集整理的C#调用ORACLE存储过程返回结果集及函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 走钢索的人---走出软件作坊:三五个人十
- 下一篇: 5G技术优势可延续!中兴通讯:已启动6G