oracle - 从oracle存储过程中获取结果集

标签 oracle stored-procedures plsql

我正在致力于将存储过程从 SQL Server 转换为 Oracle。 此存储过程提供直接结果集。我的意思是,如果您在 Management Studio 等中调用存储过程,您将直接获得结果集。

通过转换为Oracle,我遇到了Oracle中不会显示结果集的问题

我在互联网上搜索,发现存储过程应该产生一个 REF CURSOR,但我仍然带着这个问题编写了一小段代码来获取过程中的结果集。

伪代码:

调用存储过程并获取游标 使用该光标执行某些操作,以便显示我的结果集

有人有想法吗?

最佳答案

在 SQL Plus 中:

SQL> create procedure myproc (prc out sys_refcursor)
  2  is
  3  begin
  4     open prc for select * from emp;
  5  end;
  6  /

Procedure created.

SQL> var rc refcursor
SQL> execute myproc(:rc)

PL/SQL procedure successfully completed.

SQL> print rc

     EMPNO ENAME      JOB              MGR HIREDATE           SAL       COMM     DEPTNO
---------- ---------- --------- ---------- ----------- ---------- ---------- ----------
      7839 KING       PRESIDENT            17-NOV-1981       4999                    10
      7698 BLAKE      MANAGER         7839 01-MAY-1981       2849                    30
      7782 CLARKE     MANAGER         7839 09-JUN-1981       2449                    10
      7566 JONES      MANAGER         7839 02-APR-1981       2974                    20
      7788 SCOTT      ANALYST         7566 09-DEC-1982       2999                    20
      7902 FORD       ANALYST         7566 03-DEC-1981       2999                    20
      7369 SMITHY     CLERK           7902 17-DEC-1980       9988         11         20
      7499 ALLEN      SALESMAN        7698 20-FEB-1981       1599       3009         30
      7521 WARDS      SALESMAN        7698 22-FEB-1981       1249        551         30
      7654 MARTIN     SALESMAN        7698 28-SEP-1981       1249       1400         30
      7844 TURNER     SALESMAN        7698 08-SEP-1981       1499          0         30
      7876 ADAMS      CLERK           7788 12-JAN-1983       1099                    20
      7900 JAMES      CLERK           7698 03-DEC-1981        949                    30
      7934 MILLER     CLERK           7782 23-JAN-1982       1299                    10
      6668 Umberto    CLERK           7566 11-JUN-2009      19999          0         10
      9567 ALLBRIGHT  ANALYST         7788 02-JUN-2009      76999         24         10

关于oracle - 从oracle存储过程中获取结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1170548/

相关文章:

java - Spring 启动 + 甲骨文 : Hibernate dialect is 9i when in properties it is set to 10g

mysql - 对大量数据使用像JSON_EXTRACT这样的SQL函数好不好

mysql - 使用 ALTER 编辑存储过程?

jdbc - 在 Linux 上使用 JDBC 从 Java 中间层调用 Oracle PL/SQL 存储过程?

oracle - PL/SQL : declare the list of numbers to be used in IN condition

java - 使用 StoredProcedureQuery 调用 Oracle 函数?

c# - 无法从 Decimal 转换为 Int32

oracle - 从 Oracle 调用 ffmpeg api

database - 存储过程删除查询

MySQL : When stored procedure parameter name is the same as table column name