C#來調(diào)用Oracle存儲(chǔ)過程實(shí)操
本文主要講述的是用C#來調(diào)用Oracle存儲(chǔ)過程,還有返回,相關(guān)結(jié)果集,以及函數(shù),首先我們主要簡(jiǎn)述如何在Oracle中建立PACKAGE與PACKAGE BODY,將在這里面定義函數(shù)和存儲(chǔ)過程返回結(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;
- /
說明:其實(shí)PACKAGE只是個(gè)聲明罷了。我們?cè)谶@里定義了一個(gè)Oracle存儲(chǔ)過程返回結(jié)集和一個(gè)函數(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是具體的說明和使用,將采用什么方式實(shí)現(xiàn)。
C#段:
在C#中代碼將分為兩部分,一部分是使用函數(shù),另外一部分是使用結(jié)果集。
定義一個(gè)連接,從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類型也需要指定,另外和一般的Oracle存儲(chǔ)過程沒什么差別。
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();
上述的相關(guān)內(nèi)容就是對(duì)C#調(diào)用Oracle存儲(chǔ)過程的描述,希望會(huì)給你帶來一些幫助在此方面。
【編輯推薦】
- Oracle字段的轉(zhuǎn)字符串實(shí)際操作方案
- Oracle SQL的優(yōu)化規(guī)則解析
- 閑談Oracle應(yīng)用數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)與開發(fā)簡(jiǎn)介
- Oracle SQL的優(yōu)化的規(guī)則描述
- Oracle存儲(chǔ)過程的編寫經(jīng)驗(yàn)總結(jié)