现在有一下一段程序:输入参数有两个,要把这两个参数传到v_what中 'Credit.BatCalCredit(?,?,v_RetCode,v_Msg);',像我下面这样写会报错,请问正确的写法
PROCEDURE CreateBatCalCredit( p_acctmonthid IN CHAR ,
p_branchid IN t_branch_id_tab
)
IS
v_What VARCHAR2(500);
jobno NUMBER;
BEGIN
v_What := JOB_BatCalCredit
|| 'DECLARE v_RetCode number(9) ;v_Msg varchar2(500) ;'
|| 'BEGIN '
|| 'Credit.BatCalCredit('''||p_acctmonthid||''','''||p_branchid||''',v_RetCode,v_Msg);'
|| 'END;';
dbms_job.submit( jobno,
v_What);
COMMIT ;
END;
PROCEDURE CreateBatCalCredit( p_acctmonthid IN CHAR ,
p_branchid IN t_branch_id_tab
)
IS
v_What VARCHAR2(500);
jobno NUMBER;
BEGIN
v_What := JOB_BatCalCredit
|| 'DECLARE v_RetCode number(9) ;v_Msg varchar2(500) ;'
|| 'BEGIN '
|| 'Credit.BatCalCredit('''||p_acctmonthid||''','''||p_branchid||''',v_RetCode,v_Msg);'
|| 'END;';
dbms_job.submit( jobno,
v_What);
COMMIT ;
END;
PURPOSE: 自动潮流计算Job的建立与更改 REVISIONS:
Ver Date Author Description
--------- ---------- --------------- ------------------------------------
1.0 2003-10-17 Fred Zhang 1. Created this procedure.
******************************************************************************/
jobno Integer;
jobid Integer;
Begin
Select job Into jobid From all_jobs Where what='AUTO_CLJS;';
dbms_job.Change(jobid,'AUTO_CLJS;',To_Date(To_Char(Sysdate,'yyyy-mm-dd')||' '||V_timestr,'yyyy-mm-dd hh24:mi:ss'),'trunc(sysdate,''mi'')+1');
Commit;
v_jobno:=jobid;
v_msg:='恭喜你!自动计算设定已经成功更改!';
Exception When No_Data_Found Then
dbms_job.submit(jobid,'AUTO_CLJS;',To_Date(To_Char(Sysdate,'yyyy-mm-dd')||' '||V_timestr,'yyyy-mm-dd hh24:mi:ss'),'trunc(sysdate,''mi'')+1');
Commit;
v_jobno:=jobid;
v_msg:='恭喜你!自动计算已经成功设定!'; End Auto_Cljs_Job;CREATE OR REPLACE PROCEDURE Auto_Cljs_Job_Start_Stop (result OUT VARCHAR2) IS
tmpVar NUMBER;
/******************************************************************************
PURPOSE: 自动潮流计算Job的启动与停止 REVISIONS:
Ver Date Author Description
--------- ---------- --------------- ------------------------------------
1.0 2003-10-18 Fred Zhang 1. Created this procedure.
******************************************************************************/
jobid INTEGER;
job_status VARCHAR2(1);
BEGIN
SELECT job,broken INTO jobid,job_status FROM all_jobs WHERE what='AUTO_CLJS;';
IF job_status='N' THEN
dbms_job.broken(jobid,TRUE);
COMMIT;
result:='恭喜你!自动计算设定已经停止!';
ELSE
dbms_job.broken(jobid,FALSE);
COMMIT;
result:='恭喜你!自动计算设定已经开始!';
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
result:='对不起,你还没有设定此Job!';
WHEN OTHERS THEN
NULL;
END Auto_Cljs_Job_Start_Stop;