tibero 프로시저 내에서 패키지 호출 방법 문의 0 1 3,114

by poodle [Tibero] package RECORD procedure [2024.02.16 23:32:00]


안녕하세요. 몇일을 들여다봐도 답이 없어서 답답한 맘에 문의 드립니다.

이렇게 사용한 경우는 첨이라 어떻게 해야 될지 모르겠네요 아래와 같은 오류가 납니다.

이게 오라클에서 이런식으로 사용했던건데 티베로로 이전하면서 패키지를 사용할수 없게되면 이 안에있는 많은 패키지안 프로시저들을 다 바꿔줘야 합니다.

제발 도와주세요 ㅠㅠ

[23:28:15.851] Undefined identifier 'SP_TEST'.
at line 28, column 1 of null:

SP_TEST(l_emp, lngRtn);
^^^^^^^^^^^^^^

프로시저 안에서 패키지를 호출을 하는데 이 패키지를 호출할때 패키지를 글로벌로 선언한 레코드를 파라미터로 넘깁니다.

    l_emp PKG_RECORD.PKG_TEST;

    SP_TEST(l_emp, lngRtn);

l_emp PKG_RECORD.PKG_TEST;  이부분을 아래와 같이 써도

TYPE PKG_TEST IS RECORD
(
    AAA             TEST_TABLE.AAA%TYPE          DEFAULT NULL,  
    BBB             TEST_TABLE.BBB%TYPE          DEFAULT NULL,
    CCC             TEST_TABLE.CCCC%TYPE         DEFAULT NULL
       ... 100개 항목이 있어 생략
);

 

create or replace PROCEDURE TEST02( P_DATA  IN VARCHAR2 )
is
 lngRtn NUMBER;
 l_emp PKG_RECORD.PKG_TEST;
BEGIN
 l_emp.AAA := '202401';  
 l_emp.BBB := '4';
 SP_TEST(l_emp, lngRtn);
--rollback;
END TEST02;

========================================================================================
CREATE OR REPLACE PACKAGE BODY PKG_TEST AS
  PROCEDURE SP_TEST(PKG_RECORD1 IN OUT PKG_RECORD.PKG_TEST, rlngRtn    OUT NUMBER );
END PKG_TEST;
  
========================================================================================
CREATE or REPLACE PACKAGE PKG_RECORD AS
TYPE PKG_TEST IS RECORD
(
    AAA             TEST_TABLE.AAA%TYPE          DEFAULT NULL,  
    BBB             TEST_TABLE.BBB%TYPE          DEFAULT NULL,
    CCC             TEST_TABLE.CCCC%TYPE         DEFAULT NULL
       ... 40개 항목이 있어 생략
);


END PKG_RECORD;  

by poodle [2024.02.17 11:12:26]

방법을 찾았습니다. 아래와 같이 작성하니 해결이 되었어요!!!

create or replace PROCEDURE TEST02(
 AA IN VARCHAR2)
as
BEGIN
DECLARE
l_emp PKG_RECORD.PKG_TEST;
lngRtn NUMBER;
BEGIN
l_emp.AAA:= as_STLYM;
l_emp.BBB:= as_MRDDGR;
PKG_TEST .SP_TEST(l_emp, lngRtn);
 END;
END TEST02;

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