dbms_output 包中的函数未显示
dbms_output in function from package does not showed
我需要知道 employee_ids 在 HR Oracle 架构包的函数中更新了什么。为此,我尝试在此包中的另一个函数内执行 dbms_output 函数,但输出仅显示函数的 return 值,而不显示输出。
得到这个的正确形式是什么?这里是包中的代码及其功能:
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.
仔细查看您的这部分代码:
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 从函数 在 循环开始之前。
在循环之后放置 return
语句,您应该得到所需的输出。
我需要知道 employee_ids 在 HR Oracle 架构包的函数中更新了什么。为此,我尝试在此包中的另一个函数内执行 dbms_output 函数,但输出仅显示函数的 return 值,而不显示输出。
得到这个的正确形式是什么?这里是包中的代码及其功能:
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.
仔细查看您的这部分代码:
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 从函数 在 循环开始之前。
在循环之后放置 return
语句,您应该得到所需的输出。