Oracle 트리거 PLS-00103. 시간 변수에 여러 행이있는 쿼리

리카르도

누군가가 구매하지 않은 제품을 평가하려고 할 때 오류를 발생시키는 트리거를 작성하려고합니다. 클라이언트의 구매 내역을 가져 오는 쿼리가 있습니다.

SELECT nref 
FROM CartClient a 
INNER JOIN PaidCart b 
     ON a.idpurchase = b.idpurchase
INNER JOIN CartDetails c  
     ON b.idpurchase = c.idpurchase 
WHERE a.Id = '12345672X'

잘 작동합니다.

따라서 다음 트리거는 새 등급 (: new.NRef)의 제품이 구매되지 않았는지, 즉 마지막 쿼리 (NOT IN) 결과의 일부가 아닌지 확인해야합니다.

CREATE OR REPLACE TRIGGER cant_rate
BEFORE INSERT ON Rating
FOR EACH ROW   
    BEGIN
        IF (:new.NRef NOT IN (SELECT nref FROM CartClient a 
                                   INNER JOIN PaidCart b 
                                      ON a.idpurchase = b.idpurchase
                                   INNER JOIN CartDetails c  
                                      ON b.idpurchase = c.idpurchase 
                                   WHERE a.Id =:new.Id)) THEN
            RAISE_APPLICATION_ERROR(-20603,'Cant rate a not bought product');
        END IF;
    END;

오류가 발생합니다.

"PLS-00103 : 다음 중 하나를 예상 할 때"INNER "기호를 발견했습니다."

SELECT INTO를 사용하여 쿼리 결과를 시간 변수에 저장하려고했습니다. 그러나 그것은 다중 행 결과입니다. 내가 뭘 할 수 있니?

리틀 풋

그런 접근은 어떻습니까?

CREATE OR REPLACE TRIGGER cant_rate
  BEFORE INSERT ON Rating
  FOR EACH ROW   
DECLARE
  l_exists NUMBER(1) := 0;
BEGIN
  SELECT MAX(1)
    INTO l_exists
    FROM dual
    WHERE EXISTS (SELECT nref FROM CartClient A 
                  INNER JOIN PaidCart b 
                     ON A.idpurchase = b.idpurchase
                  INNER JOIN CartDetails C  
                     ON b.idpurchase = C.idpurchase 
                  WHERE A.ID = :NEW.ID
                    AND a.nref = :NEW.nref           --> is it "a.nref"?
                 );
  IF l_exists = 0 THEN
     RAISE_APPLICATION_ERROR(-20603,'Cant rate a not bought product');
  END IF;
END;

참고 "is it a.nref?" -어떤 테이블이 그 nref열을 소유하고 있는지 결코 말하지 않았 으므로 나는 그것이 있다고 가정했습니다 cartclient. 필요한 경우 수정하십시오.


시도 할 때 SQL * Plus 또는 SQL Developer에서 실행 한 경우 하위 쿼리에 대한 메시지가 표시됩니다 IF. 이 같은:

LINE/COL  ERROR
--------- -------------------------------------------------------------
2/3       PL/SQL: Statement ignored
2/21      PLS-00405: subquery not allowed in this context

그래서, 당신은 그렇게 할 수 없습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

시간 기간이있는 쿼리에서 여러 사례 (Redshift)

분류에서Dev

날짜 / 시간당 여러 그룹이있는 MySQL 쿼리 수

분류에서Dev

ORACLE SQL 트리거 : PLS-00103 : 다음 중 하나를 예상 할 때 "("기호를 발견했습니다.

분류에서Dev

트리거를 만들려고하지만 오류 PLS-00103이 발생합니다.

분류에서Dev

여러 하위 쿼리가있는 Oracle 11g LISTAGG 함수

분류에서Dev

Oracle 트리거 내에서 여러 삽입 및 업데이트 문 실행

분류에서Dev

여러 시간 기반 기준이있는 SQL 쿼리

분류에서Dev

특정 시간 프레임 동안에 만 매일 여러 번 실행되는 Data Factory 트리거를 예약하는 방법이 있습니까?

분류에서Dev

Oracle 행 수준 트리거

분류에서Dev

SQL Select-하위 쿼리에 여러 행이있는 경우

분류에서Dev

여러 날짜에 걸쳐 Oracle SQL 쿼리 실행

분류에서Dev

oracle-절차에 대한 PLS-00103 및 ORA -06550

분류에서Dev

Oracle SQL에서 시간별 데이터 쿼리

분류에서Dev

실행 시간이 오래 걸리는 SQL 쿼리-여러 개의 NOT IN 절

분류에서Dev

단일 쿼리에서 여러 변수 업데이트

분류에서Dev

Oracle의 테이블에서 수행 된 마지막 DML의 날짜 및 시간을 확인하는 쿼리

분류에서Dev

동일한 행에 여러 업데이트가있는 Postgres UPDATE..FROM 쿼리

분류에서Dev

다른 시간대에 대해 Oracle 쿼리를 실행하는 방법

분류에서Dev

여러 변수가있는 for 루프에 SQL 쿼리 추가

분류에서Dev

angularjs에 여러 매개 변수가있는 쿼리 문자열

분류에서Dev

Oracle SQL에서 여러 조인이있는 MS SQL로 쿼리를 전송할 수 없습니다.

분류에서Dev

테이블에 여러 행이있는 하나의 행 쿼리 반환

분류에서Dev

SQL (Oracle) 계산 된 값으로 여러 행 업데이트 (피타고라스 정리에 의한 거리)

분류에서Dev

MySQL의 트리거는 쿼리 제한 시간이 소요될 수 있습니다

분류에서Dev

단일 하위 쿼리는 Oracle에서 여러 행을 반환합니다.

분류에서Dev

Oracle sqlplus를 사용하여 쿼리를 실행할 때 누락 된 시간

분류에서Dev

여러 테이블 Oracle, PL / SQL을 포함하는 트리거

분류에서Dev

Oracle SQL 쿼리에서 대괄호 사이에 여러 줄이있는 문자열을 추출하는 방법

분류에서Dev

Oracle PL / SQL 오류 PLS-00103

Related 관련 기사

  1. 1

    시간 기간이있는 쿼리에서 여러 사례 (Redshift)

  2. 2

    날짜 / 시간당 여러 그룹이있는 MySQL 쿼리 수

  3. 3

    ORACLE SQL 트리거 : PLS-00103 : 다음 중 하나를 예상 할 때 "("기호를 발견했습니다.

  4. 4

    트리거를 만들려고하지만 오류 PLS-00103이 발생합니다.

  5. 5

    여러 하위 쿼리가있는 Oracle 11g LISTAGG 함수

  6. 6

    Oracle 트리거 내에서 여러 삽입 및 업데이트 문 실행

  7. 7

    여러 시간 기반 기준이있는 SQL 쿼리

  8. 8

    특정 시간 프레임 동안에 만 매일 여러 번 실행되는 Data Factory 트리거를 예약하는 방법이 있습니까?

  9. 9

    Oracle 행 수준 트리거

  10. 10

    SQL Select-하위 쿼리에 여러 행이있는 경우

  11. 11

    여러 날짜에 걸쳐 Oracle SQL 쿼리 실행

  12. 12

    oracle-절차에 대한 PLS-00103 및 ORA -06550

  13. 13

    Oracle SQL에서 시간별 데이터 쿼리

  14. 14

    실행 시간이 오래 걸리는 SQL 쿼리-여러 개의 NOT IN 절

  15. 15

    단일 쿼리에서 여러 변수 업데이트

  16. 16

    Oracle의 테이블에서 수행 된 마지막 DML의 날짜 및 시간을 확인하는 쿼리

  17. 17

    동일한 행에 여러 업데이트가있는 Postgres UPDATE..FROM 쿼리

  18. 18

    다른 시간대에 대해 Oracle 쿼리를 실행하는 방법

  19. 19

    여러 변수가있는 for 루프에 SQL 쿼리 추가

  20. 20

    angularjs에 여러 매개 변수가있는 쿼리 문자열

  21. 21

    Oracle SQL에서 여러 조인이있는 MS SQL로 쿼리를 전송할 수 없습니다.

  22. 22

    테이블에 여러 행이있는 하나의 행 쿼리 반환

  23. 23

    SQL (Oracle) 계산 된 값으로 여러 행 업데이트 (피타고라스 정리에 의한 거리)

  24. 24

    MySQL의 트리거는 쿼리 제한 시간이 소요될 수 있습니다

  25. 25

    단일 하위 쿼리는 Oracle에서 여러 행을 반환합니다.

  26. 26

    Oracle sqlplus를 사용하여 쿼리를 실행할 때 누락 된 시간

  27. 27

    여러 테이블 Oracle, PL / SQL을 포함하는 트리거

  28. 28

    Oracle SQL 쿼리에서 대괄호 사이에 여러 줄이있는 문자열을 추출하는 방법

  29. 29

    Oracle PL / SQL 오류 PLS-00103

뜨겁다태그

보관