版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36411874/article/details/84582006
由于开始编译时候,一直是报编译错误,同时,显示错误是在Oracle中,查询if里面嵌套 in一直显示不允许子查询在里面。
原因:Oracle:IF...IN (SELECT ... FROM ...) 之子查询不被允许
上代码:
if l_chanl_code in (select REF_CDE from IV_WMS_AUTO_PACK_CONF where REF_TYPE = 'CHANL_CODE' and AUTO_PACK_IND = 'N') then
return 'N';
end if;
这里一直报错。无法编译,那么更改一下即可成功解决。
解决方法:换一种写法。这只是其中的一种写法解决方法,个人还是很嫌弃用in的,因为实在太太太慢了查询。
上代码:
select third_party_cde into l_chanl_code
from es_order_line where order_key = v_order_id and rownum = 1 and third_party_cde in(
select REF_CDE from IV_WMS_AUTO_PACK_CONF where REF_TYPE = 'CHANL_CODE' and AUTO_PACK_IND = 'N'
) ;
if l_chanl_code is not null then
return 'N';
-- if l_chanl_code in (select REF_CDE from IV_WMS_AUTO_PACK_CONF where REF_TYPE = 'CHANL_CODE' and AUTO_PACK_IND = 'N') then
end if;