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
