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 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 using p_BRANCH_IDS;
return l_warehouse_list;
端;
如果我使用= i的单个i / p参数:它被绑定,请指导
答案 0 :(得分:1)
按如下方式重写您的功能:
function get_ware_house_branch(p_BRANCH_IDS 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;
return l_warehouse_list;
end;
这似乎运作正常(见this SQLFiddle)。
我所做的唯一改变是我之前评论中提出的那些 - ":"已从SQL字符串中删除,using p_BRANCH_IDS
已从EXECUTE IMMEDIATE
中删除。
分享并享受。