Plsql 是否在refcursor中显示行而不打印?

Plsql 是否在refcursor中显示行而不打印?,plsql,oracle11g,oracle-sqldeveloper,Plsql,Oracle11g,Oracle Sqldeveloper,我有一个如下所示的存储过程: CREATE OR REPLACE PROCEDURE GET_USERS(cursor_ OUT SYS_REFCURSOR) AS BEGIN OPEN cursor_ FOR SELECT * FROM SYS.dba_users; END; var mycursor refcursor; exec GET_USERS ( :mycursor ); print mycursor; 我这样测试它: CREATE OR REPLACE PRO

我有一个如下所示的存储过程:

CREATE OR REPLACE PROCEDURE GET_USERS(cursor_ OUT SYS_REFCURSOR)
AS

BEGIN

OPEN cursor_ FOR
      SELECT * FROM SYS.dba_users; 
END;
var mycursor refcursor;
exec GET_USERS ( :mycursor );
print mycursor;
我这样测试它:

CREATE OR REPLACE PROCEDURE GET_USERS(cursor_ OUT SYS_REFCURSOR)
AS

BEGIN

OPEN cursor_ FOR
      SELECT * FROM SYS.dba_users; 
END;
var mycursor refcursor;
exec GET_USERS ( :mycursor );
print mycursor;
问题在于,
打印
将其显示在
脚本输出
选项卡中,而不是
查询结果
(带网格)。对我来说,从网格上阅读更容易

问题1:如何测试存储过程,以使结果与网格一起显示在
查询结果中

问题2:运行常规的
SELECT
语句时,
F5
和绿色箭头按钮之间有什么区别?当我突出显示
时,从SYS.dba_用户中选择*
并按
F5
我在
脚本输出中获得结果。如果我按下绿色箭头按钮,结果将显示在
查询结果中

如何测试存储过程以显示结果 在查询结果中使用网格

除非您将过程作为函数编写并在SELECT查询中使用它,否则您不会

像这样:

create or replace function ref_expensive_emps return sys_refcursor
as
 c sys_refcursor;
begin
 open c for select * from employees order by salary desc fetch first 10 rows only;
 return c;
end  ref_expensive_emps;
/

select ref_expensive_emps() from dual;

或者将SELECT FROM DUAL作为脚本执行

REF_EXPENSIVE_EMPS()
--------------------
CURSOR STATEMENT : 1

CURSOR STATEMENT : 1

EMPLOYEE_ID FIRST_NAME           LAST_NAME                 EMAIL                     PHONE_NUMBER         HIRE_DATE           JOB_ID         SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID COLUMN1                                                                                                                         
----------- -------------------- ------------------------- ------------------------- -------------------- ------------------- ---------- ---------- -------------- ---------- ------------- --------------------------------------------------------------------------------------------------------------------------------
        100 Suppo0rt             King                      Suppo0rt                  515.123.4567         21-AUG-18  07.09.58 AD_PRES      49243.75                                      90                                                                                                                                 
        101 Neena                Kochhar                   NKOCHHAR                  515.123.5368         21-SEP-89  00.00.00 AD_VP        34888.29                       100            90                                                                                                                                 
        102 Lex                  De Haan                   LDEHAAN                   515.123.4569         13-JAN-93  00.00.00 AD_VP        34888.29                       100            90                                                                                                                                 
        145 John                 Russell                   JRUSSEL                   011.44.1344.429268   01-OCT-96  00.00.00 SA_MAN       28735.94             .4        100            80                                                                                                                                 
        146 Karen                Partners                  KPARTNER                  011.44.1344.467268   05-JAN-97  00.00.00 SA_MAN       27710.55             .3        100            80                                                                                                                                 
        201 Michael              Hartstein                 MHARTSTE                  515.123.5555         17-FEB-96  00.00.00 MK_MAN       26685.16                       100            20                                                                                                                                 
        108 Nancy                Greenberg                 NGREENBE                  515.124.4569         17-AUG-94  00.00.00 FI_MGR       24634.38                       101           100                                                                                                                                 
        205 Shelley              Higgins                   SHIGGINS                  515.123.8080         07-JUN-94  00.00.00 AC_MGR       24634.38                       101           110                                                                                                                                 
        147 Alberto              Errazuriz                 AERRAZUR                  011.44.1344.429278   10-MAR-97  00.00.00 SA_MAN       24634.38             .3        100            80                                                                                                                                 
        168 Lisa                 Ozer                      LOZER                     011.44.1343.929268   11-MAR-97  00.00.00 SA_REP       23608.99            .25        148            80                                                                                                                                 

10 rows selected. 
问题2:F5和绿色箭头有什么区别 运行常规SELECT语句时的按钮

常规select语句:我们运行查询,执行单个提取,保持数据集打开,并在网格中打印结果。当您在网格中滚动时,我们会根据需要进行更多的抓取。如果耗尽结果集或关闭网格,则db上的工作已完成

F5/作为脚本执行:我们通过脚本引擎(模仿SQL*Plus)运行编辑器中的任何内容或高亮显示的内容,并在脚本输出面板中打印出来。所有行都已获取

如果通过代码编辑器执行SP,则可以在网格中看到Refcursors,但与SQL工作表的网格不同


哦,使用refcursor,您只需打开/读取一次…

您可以将其创建为返回定义类型的函数,然后直接在SQL中查询(例如,从表中选择*(myfunction)),谢谢。你是否有一个链接来解释如何创建一个返回定义类型的函数。是否可以通过单击绿色箭头按钮或按
F5
,对其进行测试并在网格中显示结果?我更新了我的答案,但是@fdkgfosfskjdlsjdlkfsfI尝试从dual调用
选择refcursor_函数查询结果
选项卡,code>只返回一列(列名
REFCURSOR\u FUNCTION
)和所有内容。再次查看图片,向右滚动,双击单元格,获取铅笔,单击-获取“漂亮的网格”…或作为脚本运行,获取常规查询输出,我看到了它。我想我的问题是,如何在网格中的函数或过程中显示
select
语句的结果,而不需要多次单击