首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将在网格中提供结果的oracle sql过程

将在网格中提供结果的oracle sql过程
EN

Stack Overflow用户
提问于 2017-04-20 08:55:19
回答 2查看 1.4K关注 0票数 0

我正在尝试创建一个能够以网格形式给出结果的过程(如果可能的话)。

实际上,这是一个有3-5个参数的普通查询,但我想在一个过程中完成(我将在我正在编写的程序中使用它)

我知道如何创建简单的过程,但这些过程只能给我一行输出。如下所示:

代码语言:javascript
复制
---run procedure

SET SERVEROUTPUT ON;

begin
  procedure_name(param1);
end;

---procedure output

anonymous block completed

sample procedure_name output
EN

回答 2

Stack Overflow用户

发布于 2017-07-18 13:45:18

在Oracle12c中,这可以使用DBMS_SQL.RETURN_RESULT来实现

代码语言:javascript
复制
create or replace procedure get_data
  c1 SYS_REFCURSOR;  
  c2 SYS_REFCURSOR;  
BEGIN
  OPEN c1 FOR 
  select 'First result' as what, 1 as some_number from dual;
  DBMS_SQL.RETURN_RESULT(c1);

  OPEN c2 FOR 
  select 'Second result' as what, 2 as second_column, 3 as third_column 
  from dual;
  DBMS_SQL.RETURN_RESULT(c2);

END;
/ 

然后运行它:

代码语言:javascript
复制
exec get_data;

例如,SQL*Plus将显示以下内容:

代码语言:javascript
复制
SQL> exec get_data;

PL/SQL procedure successfully completed.

ResultSet #1

WHAT         SOME_NUMBER
------------ -----------
First result           1

1 row selected.

ResultSet #2

WHAT          SECOND_COLUMN THIRD_COLUMN
------------- ------------- ------------
Second result             2            3

1 row selected.

SQL>

其他SQL客户端可能会以不同的方式显示结果。

票数 2
EN

Stack Overflow用户

发布于 2017-07-18 10:48:51

--将游标作为输出参数返回的简单过程

代码语言:javascript
复制
CREATE OR REPLACE PROCEDURE proc_out_cur (OUT_RES OUT SYS_REFCURSOR)
AS
BEGIN
    OPEN OUT_RES FOR SELECT 22 FROM DUAL;
END;
-- Call procedure from anonymous block using bind var for the
-- cursor output. When prompted by Toad choose CURSOR as the
-- variable's datatype.
BEGIN
    proc_out_cur (:res);
END;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43508441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档