zoukankan      html  css  js  c++  java
  • C#使用oracle数据库的function与procedure

    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只是个声明罢了。我们在这里定义了一个存储过程返回结集和一个函数,返回字符串。

    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类型也需要指定,另外和一般的存储过程没什么差别。

    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();

  • 相关阅读:
    [工作后学习]解决回家之后不想看书的问题
    [M$]重装或更换主板后提示“由于指定产品密钥激活次数“ office 2016
    [linux]查询当前目录大小 du -h --max-depth=1
    【Qt学习笔记】12_MyAction自定义类
    【Qt学习笔记】11_MainWindow2
    Ubuntu18.04 搜狗输入法乱码
    【Qt学习笔记】10_MainWindow
    【Qt学习笔记】09_用户登陆界面
    【Qt学习笔记】08_布局管理
    【Qt学习笔记】07_滑块组件
  • 原文地址:https://www.cnblogs.com/chuncn/p/1434399.html
Copyright © 2011-2022 走看看