[SQL] IF는 조건이 PLSQL 작동하지 EXISTS
SQLIF는 조건이 PLSQL 작동하지 EXISTS
나는 조건이 TRUE 일 때 텍스트를 인쇄하려합니다. 선택 코드는 완벽하게 잘 작동한다. 난 단지 선택의 코드를 실행할 때 (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:
해결법
-
==============================
1.IF는 (은) 의미 잘못 존재한다. 조건 만 SQL 문 내에서 사용할 수있는 존재한다. 당신이 당신의 PL / SQL 블록을 다시 할 수 있도록 다음과 같이 :
IF는 (은) 의미 잘못 존재한다. 조건 만 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;
또는 당신은 단순히 쿼리에 의해 반환되는 행의 수를 확인 할 수 기능을 사용할 수 있으며, 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;
-
==============================
2.불행하게도 PL / SQL은 IF가 SQL Server와 같은 연산자 존재하지 않습니다. 하지만 당신은 이런 식으로 뭔가를 할 수 :
불행하게도 PL / SQL은 IF가 SQL Server와 같은 연산자 존재하지 않습니다. 하지만 당신은 이런 식으로 뭔가를 할 수 :
begin for x in ( select count(*) cnt from dual where exists ( select 1 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 ) ) loop if ( x.cnt = 1 ) then dbms_output.put_line('exists'); else dbms_output.put_line('does not exist'); end if; end loop; end; /
from https://stackoverflow.com/questions/13217600/if-exists-condition-not-working-with-plsql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] IN () 절에 SQL 매개 변수를 전달하면 .NET에서 데이터 집합을 입력하여 (0) | 2020.04.26 |
---|---|
[SQL] SQL 쿼리는 급여 테이블에서 N 번째 가장 높은 급여를 찾을 수 (0) | 2020.04.26 |
[SQL] SQL Server 관리 Studio에서 스크립트를 생성 (0) | 2020.04.26 |
[SQL] 오라클 널 (null) == null이 결정 (0) | 2020.04.26 |
[SQL] ROW_NUMBER와 별개의 SQL 쿼리 (0) | 2020.04.26 |