2014-01-19 14 views
0
create or replace package demo_pckg 
as 
type cursor_type is ref cursor; 
procedure demo_proc(i_deptno number,o_result out cursor_type); 
end; 
/


create or replace package body demo_pckg 
as 
procedure demo_proc(i_deptno number,o_result out cursor_type) 
as 
begin 
    open o_result for 
    select * from employees 
    where department_id=i_deptno; 
    end; 
end; 
/

Что делать, если я хочу напечатать эту переменную курсора OUT?Печать Oracle PLSQL OUT переменная

+1

Что вы подразумеваете под «печатью»? Отобразить набор результатов в sqlplus? Что-то другое? – Mat

ответ

1

dbms_output.put_line принт на стандартный выход. Вам нужно включить вывод сервера, чтобы увидеть результаты с помощью: set serveroutput on. Включение вывод сервера на должно быть сделано в вашей среде, как SQLPLUS и т.д. Вам нужно будет выбрать результаты в переменный с select column1 into var1 from ..., так что вы можете напечатать их позже с dbms_output.put_line('my var1: ' || var1);

2

Самым простым способом из SQL * Plus или SQL Developer это с variable и print:

var deptno number 
var result refcursor 
exec :deptno := 10; 
exec demo_pckg.demo_proc(:deptno, :result); 
print result 

Или:

var result refcursor 
declare 
    deptno emplyees.department_id%type;; 
begin 
    deptno := 10; 
    demo_pckg.demo_proc(deptno, :result); 
end; 
/
print result 

result рассматривается в качестве переменной связывания я n вызов процедуры, поэтому он имеет префикс :, но он является родной переменной SQL * Plus, поэтому он не имеет одного для вызова print. Вы можете запустить либо в SQL * Plus, либо в виде скрипта в SQL Developer, который отобразит результаты в окне вывода сценария.

Вы можете скорректировать значение deptno в вызове процедуры в любом случае, конечно, вместо того, чтобы перетаскивать переменную для ее хранения.

Если вы вызываете это из Java или какой-либо другой клиентской программы, вы можете обрабатывать свой OUT курсор, как и любой другой набор результатов.

Вы также можете объявить result как sys_refcursor в своей процедуре, а не объявлять свой собственный тип.

Смежные вопросы