zoukankan      html  css  js  c++  java
  • oracle 用包加存储过程和直接应用存储过程做的简单的应用存储过程返回结果集

    一、

    我的是用包做的简单的应用存储过程返回结果集

    create or replace package text_fhz is
      type type_cur is ref  cursor; --定义游标变量用于返回记录集
      procedure TESTA(deptcode IN VARCHAR2,
              v_cur  out type_cur--定义输出的变量

    );
    end text_fhz;

    create or replace package body text_fhz is
    procedure TESTA(deptcode IN VARCHAR2,
              v_cur  out type_cur) AS

                v_sql     varchar2(4000);
                v_deptcode_n varchar2(100);
               BEGIN
                v_deptcode_n := deptcode || '%';
                --v_sql := 'select zcbm,fwzc_id  from t_fwzc where deptcode like '''||deptcode || '%''';
                v_sql := 'select zcbm,fwzc_id  from t_fwzc where deptcode like '''||v_deptcode_n ||'''';
                open v_cur for v_sql;
               END TESTA;
    end text_fhz;

    调用
    下面的数据库调用可能要自己写了。

    protected void Button6_Click(object sender, EventArgs e)
            {
                //C#調用Package中的Procedure
                OracleCommand comm =   base.Conn.CreateCommand();
                comm = new OracleCommand("text_fhz.TESTA", base.Conn);
                comm.CommandType = CommandType.StoredProcedure;
                //OracleParameter p1 = new OracleParameter("str",OracleType.VarChar,10);

                OracleParameter p1 = new OracleParameter("deptcode", OracleType.Number);
                p1.Direction = ParameterDirection.Input;
                p1.Value = "1";
                OracleParameter p2 = new OracleParameter("v_cur", OracleType.Cursor);
                p2.Direction = ParameterDirection.Output;
                comm.Parameters.Add(p1);
                comm.Parameters.Add(p2);

                DataTable dt = new DataTable();
                OracleDataAdapter da = new OracleDataAdapter(comm);
                da.Fill(dt);
                string xx = "";

            }

    不用 包 直接用存储过程返回数据集这里我们应用了sys_refcursor 这个返回游标sys_refcursor是oracle9i以后系统定义的一个refcursor,主要用在过程中返回结果集。

    create or replace procedure text_fhz_SYS_REFCURSOR(deptcode in varchar,v_cur out sys_refcursor)
    is
     v_sql     varchar2(4000);
     v_deptcode_n varchar2(100);
    begin
    v_deptcode_n:=deptcode || '%';
    v_sql := 'select * from t_fwzc where deptcode like '''||v_deptcode_n||'''';
    open v_cur for  v_sql;
    end text_fhz_SYS_REFCURSOR;

    同包一样的操作不过就是标红的地方有所不一样。

    protected void Button6_Click(object sender, EventArgs e)
            {
                //C#調用Package中的Procedure
                OracleCommand comm =   base.Conn.CreateCommand();
                comm = new OracleCommand("text_fhz_SYS_REFCURSOR", base.Conn);
                comm.CommandType = CommandType.StoredProcedure;
                //OracleParameter p1 = new OracleParameter("str",OracleType.VarChar,10);

                OracleParameter p1 = new OracleParameter("deptcode", OracleType.Number);
                p1.Direction = ParameterDirection.Input;
                p1.Value = "1";
                OracleParameter p2 = new OracleParameter("v_cur", OracleType.Cursor);
                p2.Direction = ParameterDirection.Output;
                comm.Parameters.Add(p1);
                comm.Parameters.Add(p2);

                DataTable dt = new DataTable();
                OracleDataAdapter da = new OracleDataAdapter(comm);
                da.Fill(dt);
                string xx = "";

            }

  • 相关阅读:
    ASP.NETLinkButton的Click事件中获取CommandArgument的值
    关于绑定了GridView控件后怎么截取字符串和CSS样式来控制表头不换行
    自动生成不重复的含有数字和字母的随机码
    ASP.NET母版页
    C#随机不重复数字字符串2
    asp.net中实现在文本框按下回车键后相当于按下tab键focus跳到下一个文本框
    ASP.NET获取<EmptyDataTemplate></EmptyDataTemplate>模板中的textBox控件值
    C#生成拼音简码
    gridview获取当前行索引的方法大集合
    一、XML
  • 原文地址:https://www.cnblogs.com/wangyt223/p/2742412.html
Copyright © 2011-2022 走看看