zoukankan      html  css  js  c++  java
  • 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,否则会报错

  • 相关阅读:
    Ubuntu部署Asp.net core网站无法访问
    .Net Core IFormFile 始终为空的问题
    Webbench的使用
    JS设置localStorage有效期
    Autofac的简单使用
    对于异步的理解
    DBHelper 数据库帮助类
    利用反射把数据库查询到的数据转换成Model、List(改良版)
    部署方案@应用系统单点切换解决方案
    部署方案@项目版本管理控制流程规范
  • 原文地址:https://www.cnblogs.com/txgh/p/13944647.html
Copyright © 2011-2022 走看看