[패키지 개별실행]
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
이런식으로 에러가 나는데.. 왜일까요.. ?
어제에 이어 오늘도 순탄치 않네요..
답변 좀 부탁드립니다. .
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;
두분 감사드립니다.
그대로 사용하면 되는 거였군요..
공유해주셔서 너무 감사드립니다.
번거로우실텐데, 그래도 답변을 달아주셔서 질문자한테는 정말로 고마운 일입니다.
덕분에 잘 해결했습니다.
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;