[英]Sub query not allowed in Stored procedure error
我正在尝试执行一个过程,但是该过程的以下部分出现错误。
出现以下错误:
PL / SQL:语句被忽略错误PLS-00405:PLS-00405中不允许子查询:在这种情况下,此上下文中不允许子查询ERROR
代码是:
--DECLARE
L_ERROR_POINT VARCHAR2 (100);
BEGIN
P_STATUS_CODE := 0;
P_ERROR_MESSAGE := '';
--My error occurs in the below two lines--
IF(P_DE || ' A' = (SELECT DAL_ET.PARAMETER_DESC FROM DAL_ET)
AND P_IDENTIFIER_TYPE_DESCRIPTION =(SELECT DAL_ET.PARAMETER_TEXT_VALUE FROM DAL_ET))
THEN
L_ERROR_POINT := 'INSERT INTO DAL_ID_TB';
我该如何重写此查询? 提前致谢。
您不能在IF
语句中直接使用查询; 要获得所需的内容,可以使用一个变量:
DECLARE
vCheckValue varchar2(100);
...
BEGIN
select ...
into vCheckValue
from ...
where ...
--
if (vCheckValue = ...) then
...
end if;
END;
将以下内容更改为变量:
SELECT DAL_ET.PARAMETER_DESC
into v_PARAMETER_DESC
FROM DAL_ET
SELECT DAL_ET.PARAMETER_TEXT_VALUE
into v_PARAMETER_TEXT_VALUE
并在if语句中使用它们:
IF(P_DE || ' A' = v_PARAMETER_DESC
AND P_IDENTIFIER_TYPE_DESCRIPTION = v_PARAMETER_TEXT_VALUE)
.....
您不能在IF
条件下运行SQL语句。 相反,您必须首先运行SQL语句,将结果保存到变量中,然后在IF
使用它:
SELECT DAL_ET.PARAMETER_DESC
INTO l_param_desc
FROM DAL_ET;
IF l_param_desc = P_DE || ' A'
AND ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.