SDLTTR이 541이 되는 순간부터 INSERT, UPDATE 되도록 하고 싶어요 0

by 꿈나꾸 [PL/SQL] [2023.08.03 17:52:53]


CREATE OR REPLACE TRIGGER F4211_IN
AFTER                                              
 INSERT OR UPDATE OR DELETE ON F4211
FOR EACH ROW                                
---------------------------------------------------------------------------------------------------------------------------------------------------------------    
DECLARE
    V_COUNT NUMBER := 0;
BEGIN
  ---------------------------------------------------------------------------------------------------------------------------------------------------------------    
    IF :NEW.SDLTTR = 541 THEN -- SDLTTR 값이 541인 경우에만 동작
  ---------------------------------------------------------------------------------------------------------------------------------------------------------------    

   IF INSERTING THEN                            

         SELECT Count(*) INTO V_COUNT 
         FROM F500002                                     
         WHERE 1=1
                AND B1KCOO      =:NEW.SDKCOO            
                AND B1DOCO    =:NEW.SDDOCO
                AND B1DCTO    =:NEW.SDDCTO
                AND B1LNID    =:NEW.SDLNID;
                  
      IF V_COUNT = 0       THEN          
        INSERT INTO F500002 (
    B1KCOO,
    B1DOCO,
    B1DCTO,
    B1LNID,
    B1AN8
)
    VALUES (
    :NEW.SDKCOO,
    :NEW.SDDOCO,
    :NEW.SDDCTO,
    :NEW.SDLNID,
    :NEW.SDAN8
);
    END IF; 
    
---------------------------------------------------------------------------------------------------------------------------------------------------------------    

   ELSIF UPDATING THEN
  SELECT Count(*) INTO V_COUNT 
  FROM F500002
  WHERE 1=1
        AND B1KCOO = :OLD.SDKCOO -- 기존에 있던 오더
        AND B1DOCO = :OLD.SDDOCO
        AND B1DCTO = :OLD.SDDCTO
        AND B1LNID = :OLD.SDLNID;
  
  IF V_COUNT <> 0 THEN 
    UPDATE F500002
    SET
      B1KCOO = :NEW.SDKCOO,
      B1DOCO = :NEW.SDDOCO,
      B1DCTO = :NEW.SDDCTO,
      B1LNID = :NEW.SDLNID,
      B1AN8 = :NEW.SDAN8,

    WHERE 1=1
      AND B1KCOO = :OLD.SDKCOO 
      AND B1DOCO = :OLD.SDDOCO
      AND B1DCTO = :OLD.SDDCTO
      AND B1LNID = :OLD.SDLNID;
  END IF; 
END IF;
END IF;

END;
 

by 마농 [2023.08.04 08:57:05]

제목이 곧 질문인가요?
본문 안에 있는 IF 문이 질문의 답이 아닌지요?
제목 외에는 상세 질문이 전혀 없어서 질문의 의도를 모르겠네요?


by 마농 [2023.08.04 10:17:23]

인식을 못합니다. 라고 하시면? 어쩌라구? 라고 답변할수밖에 없습니다.
뭐가 어떻게 안되는지 구체적으로 질문하셔야 합니다.
어떤 상황에서 어떤걸 시도했는데 어떤 메시지가 나온다 식으로 구체적으로 질문해 주세요.
컴파일이 안되는 것인지?
컴파일은 되는데 동작중에 오류가 나는 것인지? 
오류는 안나지만 원하는 결과가 안나오는 것인지?
등등등...


by 꿈나꾸 [2023.08.04 11:00:37]

아 넵 오류는 안나지만 아예 insert, update가 진행되지 않습니다. 상태코드 LTTR이 541인 상태에서부터 INSERT 및 UPDATE를 시키고 싶은데 상태가 541이 되어도 아무 행위도 진행되지 않습니다

 

CREATE OR REPLACE TRIGGER F4211_IN
AFTER                                              
 INSERT OR UPDATE OR DELETE ON F4211
FOR EACH ROW                                
---------------------------------------------------------------------------------------------------------------------------------------------------------------    
DECLARE
    V_COUNT NUMBER := 0;
BEGIN
  ----------------------------------------------------------------------------------------------------------------------------------
 IF :NEW.SDLTTR >='541' THEN -- SDLTTR 값이 541인 경우에만 동작

  ----------------------------------------------------------------------------------------------------------------------------------
 

   IF INSERTING THEN                            

         SELECT Count(*) INTO V_COUNT 
         FROM F500002                                     
         WHERE 1=1
                AND B1KCOO      =:NEW.SDKCOO            


by 꿈나꾸 [2023.08.04 09:56:43]

저렇게 했는데 인식을 못합니다 ㅠㅠ


by 마농 [2023.08.04 11:23:59]

테스트 수행 절차 전반에 대해 꼼꼼하게 설명해 주셔야 합니다.
insert 가 진행되지 않는다? 라는 말이
F4211 에 대한 말인지? F500002 에 대한 말인지 도 잘 모르겠구요.
테스트 수행 절차는 전혀 없이 소스만 주어진 상황에서만 판단해 보면
일단 소스에 구문 오류가 있습니다. 컴마가 안맞네요. 컴파일이 잘 되었는지 의문.
소스에 문제가 없다면 로직에 대한 문제는 딱 눈에 띄는 것은 없네요.
테스트 절차상 문제가 없었는지?
주어 목적어 빼고 질문하시면? 도움 드릴 수가 없습니다.
안되면 스스로 디버깅 해보셔야 합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입