17,377
社区成员
发帖
与我相关
我的任务
分享
create or replace aaa(aa in scott.emp%rowtype) as
begin
dbms_output.put_line(aa.ename);
end;
declare
v_sql varchar2(2000);
begin
v_sql := 'begin'
v_sql := 如何调用?
v_sql := v_sql || ' end';
end;
execute immediate
'declare
v_row_emp emp%rowtype;
begin
aaa(v_row_emp)
end;';
这样传递的参数为varchar2类型,而不是rowtype类型
create or replace aaa(aa in scott.emp%rowtype) asbegindbms_output.put_line(aa.ename);end;
declare
v_sql varchar2(4000);
v_row_emp emp%rowtype;
begin
v_sql := 'begin aaa(:v1) end';
execute immediate v_sql using v_row_emp;
报参数类型不对execute immediate
'declare
a table.column%rowtype;
begin
end;'
create or replace procedure aaa(aa in scott.emp%rowtype) as
begin
dbms_output.put_line(aa.ename);
end;
/
set serveroutput on;
declare
begin
for c1 in (select * from scott.emp) loop
aaa(c1);
end loop;
end;
/