트리거, 프로시저 변수명 관련 0 2 779

by rojaa [Oracle 기초] procedure trigger [2021.11.25 15:43:51]


안녕하세요. 트리거와 프로시저 변수명 관련해서 질문드릴게 있습니다. (Oracle 10g 와 토드를 사용하고있습니다)

테이블 A, B, C, D가 있습니다.

A의 값을->B 로 값을 전달하는 프로시저 = SP1

B->C 로 값을 전달하는 프로시저 = SP2

C->D 로 값을 전달하는 프로시저 = SP3

그리고 B 테이블에 insert 트리거를 겁니다. = TR1

SP1를 실행하면 트리거에 의해 A에서 D까지 값이 전달되는 구조입니다.

(SP1실행 -> TR1시작 -> SP2 -> SP3 -> TR1종료 -> SP1 종료 흐름입니다)

SP2에서 B 테이블에는 CODE 컬럼이 없고 C 테이블에는 CODE컬럼이 존재합니다.

이때 트리거가 실행될 때 선언된 매개변수 값(V_CODE)을 C 테이블에 insert 하려합니다.

TR1 DECLARE 부분에는 V_CODE IN VAR2 :='A' 가 선언되어있습니다.

트리거에 의해 SP2 가 실행될때 SP2 선언부분에는 I_CODE IN VAR2 가 선언 되어있습니다.

SP2 에서 B 에서 C 로 INSERT 할때 C 테이블의 CODE 컬럼 VALUES 에 I_CODE를  넣습니다.

SP3도 마찬가지입니다. 트리거에서 선언한 변수명과 프로시저에서 선언한 변수명이 다른데(트리거 : V_CODE, 프로시저 : I_CODE)

'A'의 값을 전달할 수 있는지 궁금합니다.  아직 초보라 조금 두서없지만 답변해 부탁드립니다.

by 마농 [2021.11.25 15:51:37]

sp2 에서 i_code 입력변수 선언하여 트리거의 v_code 값을 전달 받으셨다면
sp3 에서 i_code 입력변수 선언하여 sp2 의 i_code 값을 다시 전달 받으면 됩니다.


by rojaa [2021.11.25 16:05:28]

머릿속에 정리가 안됐던 것이 풀린것 같습니다. 답변 감사합니다..

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