【问题标题】:dbms_output in function from package does not showed包中的函数中的 dbms_output 未显示
【发布时间】:2019-08-17 03:25:27
【问题描述】:

我需要知道 HR Oracle Schema 包的函数中的哪些employee_ids 已更新。为此,我尝试在此包中的另一个函数内执行 dbms_output 函数,但输出仅显示函数的返回值,而不是输出。

获取这个的正确形式是什么?,这是包中的代码及其功能:

create or replace package body pac_busqueda_empleados7 as
function f_cambia_datos_empl( p_nom in employees.first_name%TYPE)
return number is 
i NUMBER := 0;
v_val_nom employees.first_name%type;
ids dbms_sql.number_table;
begin
v_val_nom := p_nom;
update employees set first_name = 'NN' where employees.first_name=v_val_nom return employees.employee_id bulk collect into ids;
return 1;
for i in ids.first .. ids.last loop
    dbms_output.put_line('Updated: ' || ids(i));
  end loop;
exception when others then
return 0;
end;
end pac_busqueda_empleados7;

这是这个包函数的执行块。

declare
v_nombre employees.first_name%type;
v_resultado number;
begin
v_nombre := 'Nombre';
v_resultado:=pac_busqueda_empleados7.f_cambia_datos_empl(v_nombre);
dbms_output.put_line(v_resultado);
end;

预期的输出应该是:

1
Updated: 100
Updated: 101
Updated: 102
Updated: 103
.
.
.
etc.

但现在只有:

1

PL/SQL procedure successfully completed.

【问题讨论】:

    标签: oracle plsql dbms-output


    【解决方案1】:

    仔细查看这部分代码:

    begin
    v_val_nom := p_nom;
    update employees set first_name = 'NN' where employees.first_name=v_val_nom return employees.employee_id bulk collect into ids;
    return 1;
    for i in ids.first .. ids.last loop
        dbms_output.put_line('Updated: ' || ids(i));
    end loop;
    

    循环开始之前从函数返回。
    在循环之后放置return 语句,您应该会得到所需的输出。

    【讨论】:

      猜你喜欢
      • 2019-01-02
      • 1970-01-01
      • 2020-05-25
      • 1970-01-01
      • 1970-01-01
      • 2016-05-22
      • 2014-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多