现在有一下一段程序:输入参数有两个,要把这两个参数传到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;

解决方案 »

  1.   

    给你一段代码供你参考Create Or Replace Procedure Auto_Cljs_Job (v_timestr In Varchar2,v_jobno Out Varchar2,v_msg Out Varchar2) Is/******************************************************************************
       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;