oracle - 由于 out 参数分配错误,dbms_scheduler 作业失败
问题描述
我正在从我正在执行第二个存储过程(具有 IN 和 OUT 参数)作为 dbms_scheduler 包中的 plsql_block 作业类型的过程创建一个一次性调度作业。现在,当我运行创建作业的主程序并调用第二个程序时,我收到以下错误并且作业失败:第 4 行,第 35 列:
> PLS-00363: expression '<null>' cannot be used as an assignment target
> ORA-06550: line 5, column 35: PLS-00363: expression '<null>' cannot be
> used as an assignment target ORA-06550: line 2, column 11: PL/SQL:
-- Main Procedure
CREATE or replace PROCEDURE HBK_test_JOB
( date_1 in date, date_2 in date,
O_RETURN_CD OUT NUMBER,
O_RETURN_MESSAGE OUT VARCHAR2) as
LV_Error varchar2(100);
begin
begin
O_RETURN_CD := 1;
O_RETURN_MESSAGE := 'Success';
insert into test_trans_job
values ( date_1, date_2, 'JKL');
commit;
exception
when others then
LV_error := sqlerrm || sqlcode;
O_RETURN_CD := 100;
O_RETURN_MESSAGE := 'insert failed' || LV_error;
end;
update test_trans_job c
set name = 'XYZ'
where c.date1 = date_1
and c.date2 = date_2;
commit;
exception
when others then
LV_error := sqlerrm || sqlcode;
O_RETURN_CD := 1001;
O_RETURN_MESSAGE := 'failed'|| LV_error;
end; ```
--JOB CALLING PROCEDURE
``` Create or replace procedure hbk_test_run_job ( date_1 in date, date_2 in date,
OUT_REF_CUR_1 OUT SYS_REFCURSOR )
as
lv_run_id number;
LV_ERROR_MSSG varchar2(100);
D1 date;
D2 date;
OUT_CD number;
OUT_MSSG varchar2(500);
Begin
SELECT MAX(H.RUN_ID)into LV_RUN_ID
FROM SY_DSA_RUN_STATUS_HLSIL H;
D1 := date_1;
D2 := date_2;
DBMS_SCHEDULER.CREATE_JOB(
JOB_NAME => 'TRANSACTION_DOWNLOAD_JOB_'||LV_RUN_ID,
JOB_TYPE => 'PLSQL_BLOCK',
JOB_ACTION => 'begin
hlsil.HBK_test_JOB('''||D1||''',
'''||D2||''',
'''||OUT_CD||''',
'''||OUT_MSSG||''');
END;',
NUMBER_OF_ARGUMENTS => 0,
START_DATE => SYSTIMESTAMP + 1/1440,
ENABLED => TRUE,
AUTO_DROP => TRUE,
COMMENTS => 'ONE TIME TRANS DWLD JOB RUN');
OPEN OUT_REF_CUR_1 FOR
SELECT 'TRANSACTION DOWNLOAD JOB STARTED RUNNING IN THE BACKGROUND'
status
FROM DUAL;
EXCEPTION
WHEN OTHERS THEN
LV_ERROR_MSSG := SQLERRM(SQLCODE);
OPEN OUT_REF_CUR_1 FOR
SELECT 'ERROR WHILE CREATING TRANS DOWNLOAD JOB' ||LV_ERROR_MSSG error
FROM DUAL;
END; ```
解决方案
推荐阅读
- c# - 如何检查字典中的重复值
- printing - wkhtmltopdf 打破网格模板
- python - AttributeError:“窗口”对象没有“按下”属性
- python - timeit(缓存问题?)导致不可靠(?)
- android - ANDROID_ID 在 Android 清单文件中需要一些特定权限吗?
- javascript - 表单提交触发无头 UI 元素打开
- python - 我可以在excel单元格中编写一行代码然后将其导入python吗?
- visual-studio-code - 如何防止 vs 代码不访问我的所有文件
- c# - 如何在 ASP.NET MVC 中自动更改用户角色
- android - 如何在博览会中更改targetsdkversion android api级别?