• delphi使用ODAC控件查询存储过程返回结果集


    使用TOraStoredProc控件执行Oracle存储过程

    Oracle存储过程返回单结果集

    存储过程

    CREATE OR REPLACE PROCEDURE p_test(p_deptno IN varchar2, p_recordset OUT SYS_REFCURSOR) AS
    BEGIN
      OPEN p_recordset FOR
        SELECT * FROM Dept WHERE deptno = p_deptno;
    
    END;

    代码

      OraStoredProc1.Session := OraSession;
      OraStoredProc1.StoredProcName := 'p_test';
      OraStoredProc1.ParamByName('p_deptno').AsString := '1';
      OraStoredProc1.Open;

    备注

    1.结果集是只读的,设置LocalUpdate属性后,可以进行修改,但不会提交数据库

    Oracle存储过程返回多结果集

    存储过程

    CREATE OR REPLACE PROCEDURE p_test2(p_deptno     IN varchar2,
                                        p_recordset1 OUT SYS_REFCURSOR,
                                        p_recordset2 OUT SYS_REFCURSOR) AS
    BEGIN
      OPEN p_recordset1 FOR
        SELECT * FROM Dept WHERE deptno = p_deptno;
      OPEN p_recordset2 FOR
        SELECT * FROM Users WHERE deptno = p_deptno;
    END;

    代码

      OraStoredProc1.Session := OraSession;
      OraStoredProc1.StoredProcName := 'p_test';
      OraStoredProc1.ParamByName('p_deptno').AsString := '1';
      OraStoredProc1.Open;  //查询第二个结果集(p_recordset2)
      OraStoredProc1.OpenNext;  //查询第一个结果集(p_recordset1)

    备注

    1.第一个和第二个结果集都是只读的,设置LocalUpdate属性后,可以进行修改,但不会提交数据库

    同时展现多个结果集

    代码

      OraStoredProc1.Session := OraSession;
      OraStoredProc1.StoredProcName := 'p_test';
      OraStoredProc1.ParamByName('p_deptno').AsString := '1';
      OraStoredProc1.Open;  //查询第二个结果集(p_recordset2)
      OraQuery1.Cursor := orsp1.ParamByName('p_recordset1').AsCursor;
      OraQuery1.Open; //查询第一个结果集(p_recordset1)

    备注

    1.OraQuery1中的结果集不是只读的,但修改后不会提交数据库

    2.OraStoredProc1.Close前,必须先OraQuery1.Close,否则会报错

  • 相关阅读:
    转:Caused by: java.lang.NoSuchMethodError: org.apache.log4j.Category.log
    maven安装
    eclipse安装插件
    java.lang.ClassNotFoundException: com.*.listener.ConfigInfoReader
    oracle
    myeclipse中文乱码,JSP页面乱码
    ansible 列表变量、字典变量
    python模块
    python函数
    python数据类型2
  • 原文地址:https://www.cnblogs.com/txgh/p/13944647.html
Copyright © 2020-2023  润新知