Plsql 我有一个返回多个o/p的函数,我需要调用这个函数来插入到表中
我收到错误Plsql 我有一个返回多个o/p的函数,我需要调用这个函数来插入到表中,plsql,syntax-error,Plsql,Syntax Error,我收到错误p\u分支\u ID不能用作第二个代码中的赋值运算符 第一个代码正在运行, 请帮助这是因为参数在第一个代码中声明为in-out,但是,正如第二个函数中的一样。如果我在第一个函数中使用它,程序接受它并编译ypls答案为y,我得到了06502个错误,我也得到了错误-6502-ORA-06502:PL/SQL:numeric或value error,如果我提供p_branch_id(1,2,3),但是如果我提供p_branch_id(1,2),代码工作正常适用于2个i/p参数,但不适用于2个
p\u分支\u ID不能用作第二个代码中的赋值运算符
第一个代码正在运行,
请帮助这是因为参数在第一个代码中声明为in-out
,但是,正如第二个函数中的一样。如果我在第一个函数中使用它,程序接受它并编译ypls答案为y,我得到了06502个错误,我也得到了错误-6502-ORA-06502:PL/SQL:numeric或value error,如果我提供p_branch_id(1,2,3),但是如果我提供p_branch_id(1,2),代码工作正常适用于2个i/p参数,但不适用于2个以上的i/p参数。原因是什么
create or replace type branch_warehouse as object (wh_id number,wh_name varchar2(100));
create or replace type id_warehouse_list as table of branch_warehouse;
function get_ware_house_branch(p_BRANCH_IDS in out varchar2)
return id_warehouse_list is
l_warehouse_list id_warehouse_list := id_warehouse_list();
str varchar2(300);
begin
str := 'SELECT BRANCH_WAREHOUSE(w.wh_id, w.wh_name)
FROM POD_WAREHOUSE_MASTER W
where ( W.BRANCH_ID IN (' || p_BRANCH_IDS || '))';
execute immediate str bulk collect into l_warehouse_list;
for i in l_warehouse_list.first..l_warehouse_list.last loop
dbms_output.put_line(l_warehouse_list(i).wh_id || ', ' || l_warehouse_list(i).wh_name);
end loop;
return l_warehouse_list;
end;
procedure insert_place_warehouse_map(p_PLACE_NAME in varchar2,
p_BRANCH_IDS in number,
p_status out varchar2,
p_status_dtl out varchar2) is
v_ID number;
l_warehouse_list id_warehouse_list := id_warehouse_list();
begin
v_ID := get_place_id (p_PLACE_NAME);
l_warehouse_list := get_ware_house_branch(p_BRANCH_IDS);
for i in l_warehouse_list.first..l_warehouse_list.last loop
insert into pod_place_warehouse_map(
id,
place_id,
wh_id,
wh_name)
values(
pod_unique_val_seq.nextval,
v_ID,
l_warehouse_list(i).wh_id,
l_warehouse_list(i).wh_name);
v_rec_cnt := sql%rowcount;
end loop;
commit;
p_status := 'SUCESS';
p_status_dtl := v_rec_cnt||' Record Inserted Successfully';
exception
when others then
rollback;
p_status_dtl := sqlcode||' - '||substr(sqlerrm,1,100);
p_status := 'ERROR';
end;