오라클 JOB 등록하는데 에러가 나는데요.. 어디가 잘못되었을까요? 0 3 3,343

by sun [2019.01.09 17:54:32]


[패키지 개별실행]

DECLARE  
  V_MSG varchar2(4000);
  v_err number;
BEGIN 

  PKG_CUST_INTEGRATE.SP_TEMP2CUST(V_MSG);   =>     형식  : PROCEDURE SP_TEMP2CUST (PO_MSG OUT VARCHAR2)
  DBMS_OUTPUT.PUT_LINE(V_MSG);


END ;

/* 위처럼 패키지 실행하면 잘 됩니다 */ 
 

 

DECLARE
    jobno number;
BEGIN
    DBMS_JOB.SUBMIT(jobno,
                    what => 'SCOTT.PKG_CUST_INTEGRATE.SP_TEMP2CUST(''TEST'');',          /* 이부분( ''TEST'') OUT PARAMETER라 이렇게 넣어봤습니다. */ 
                    next_date => TO_DATE('2019/01/09 17:50:00','YYYY/MM/DD HH24 :MI:SS'),
                    interval => 'sysdate + 1/24/60');
END;

 

2019/01/09 17:54:00 >
ORA-06550: 줄 1, 열131:PLS-00363: 'TEST' 식은 피할당자로 사용될 수 없습니다
ORA-06550: 줄 1, 열93:PL/SQL: Statement ignored
ORA-06512: "SYS.DBMS_JOB", 줄 79에서
ORA-06512: "SYS.DBMS_JOB", 줄 136에서
ORA-06512: 줄 4에서

Execution Time : 00:00:00.31

이런식으로 에러가 나는데.. 왜일까요.. ? 

어제에 이어 오늘도 순탄치 않네요.. 

답변 좀 부탁드립니다. . 


 

by 신이만든지기 [2019.01.09 18:33:13]

OUT 파라미터에 값을 대입해서 그렇습니다.

아무변수 하나 선언해서 변수로 대입하면 해결 될 겁니다.(아래 소스를 테스트 해보진 않았어요;;.)

예 )

DECLARE
    jobno number;
BEGIN
    DBMS_JOB.SUBMIT(jobno,
                    what => 'declare 
                                v_msg varchar2(4000)
                             begin
                                SCOTT.PKG_CUST_INTEGRATE.SP_TEMP2CUST(v_msg)
                             end;',          
                    next_date => TO_DATE('2019/01/09 17:50:00','YYYY/MM/DD HH24 :MI:SS'),
                    interval => 'sysdate + 1/24/60');
END;

 


by 마농 [2019.01.10 09:32:31]

잘 실행된 부분 그대로('Declare ~ end;') 넣으세요.


by sun [2019.01.10 11:33:40]

두분 감사드립니다.

그대로 사용하면 되는 거였군요..

공유해주셔서 너무 감사드립니다.

번거로우실텐데, 그래도 답변을 달아주셔서 질문자한테는 정말로 고마운 일입니다.

덕분에 잘 해결했습니다.

 

DECLARE
    jobno number;
BEGIN
    DBMS_JOB.SUBMIT(jobno,
        what => 'declare
                                v_msg varchar2(4000) ;
                             begin
                               SCOTT.PKG_CUST_INTEGRATE.SP_TEMP2CUST(v_msg);
                             end;',
        next_date => TO_DATE('2019/01/10 11:32:05','YYYY/MM/DD HH24:MI:SS'),
        interval => 'sysdate + 1/24/60');
END;

 

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