当条件为TRUE时,我尝试打印TEXT。选择代码完全正常工作。当我只运行选择代码时显示403值。但是当条件存在时,我必须打印一些文本。以下代码有什么问题?
BEGIN IF EXISTS( SELECT CE.S_REGNO FROM COURSEOFFERING CO JOIN CO_ENROLMENT CE ON CE.CO_ID = CO.CO_ID WHERE CE.S_REGNO=403 AND CE.COE_COMPLETIONSTATUS = 'C' AND CO.C_ID = 803 ) THEN DBMS_OUTPUT.put_line('YES YOU CAN'); END;
以下是错误报告:
Error report: ORA-06550: line 5,column 1: PLS-00103: Encountered the symbol "JOIN" when expecting one of the following: ),with group having intersect minus start union where connect 06550. 00000 - "line %s,column %s:\n%s" *Cause: Usually a PL/sql compilation error. *Action:@H_502_7@
@H_502_7@
IF EXISTS()在语义上不正确。 EXISTS条件只能在sql语句中使用。所以你可以重写你的pl / sql块,如下所示:
declare l_exst number(1); begin select case when exists(select ce.s_regno from courSEOffering co join co_enrolment ce on ce.co_id = co.co_id where ce.s_regno=403 and ce.coe_completionstatus = 'C' and ce.c_id = 803 and rownum = 1 ) then 1 else 0 end into l_exst from dual; if l_exst = 1 then DBMS_OUTPUT.put_line('YES YOU CAN'); else DBMS_OUTPUT.put_line('YOU CANNOT'); end if; end;
或者你可以简单地使用count函数来确定查询返回的行数,而rownum = 1谓词 – 你只需要知道一条记录是否存在:
declare l_exst number; begin select count(*) into l_exst from courSEOffering co join co_enrolment ce on ce.co_id = co.co_id where ce.s_regno=403 and ce.coe_completionstatus = 'C' and ce.c_id = 803 and rownum = 1; if l_exst = 0 then DBMS_OUTPUT.put_line('YOU CANNOT'); else DBMS_OUTPUT.put_line('YES YOU CAN'); end if; end;@H_502_7@ 原文链接:https://www.f2er.com/oracle/205982.html