1、job 的绑定的作业编号要怎样定义呢?
delare 
jobno integer
begin
dbms_job.submit( job=>:jobno
....
这样会报错,无法绑定变量jobno,为什么?2、另外,我看有人这样写job=>jobno,可是运行是有问题的,是怎么回事?3、声明jobno 可以 var jobno number,那用declare 和不用的declare有什么区别?4、我有n个job是不是共用jobno?
谢谢!

解决方案 »

  1.   

    1. 你定的的是ql/sql程序块,所以提交的时候不能用:号,如下面就好了:
    delare
    jobno integer
    begin
    dbms_job.submit( job=>jobno, ....)
    end;2. 不明白你说的什么叫做运行有问题3.SQL>var jobno number;
    SQL> exec dbms_job.submit(job=>:jobno);4. 每个job的jobno是唯一的,我想你说的是可以用同一个jobno变量来进行submit吧,这样是没有问题的
      

  2.   

    楼上说的
    1、我就是这么写的,但是print jobno 为空
        后来SQL>var jobno number; 就没问题了。不知道是为什么?
    2、plsql如果不就冒号,print jobno 为同样的值,run()会报错?
    3、楼上这2句,为什么这里加冒号,而写在plsql里不加?谢谢!
      

  3.   

    1、我就是这么写的,但是print jobno 为空 
    这个不能在sqlplus下直接打印,jobno变量的范围在你的pl/sql程序块里
    这样才行:
    set serverout on
    delare
    jobno integer
    begin
        dbms_job.submit( job=>jobno, ....);
        dbms_output.put_line(jobno);
    end; 你需要区分 sqlplus变量和绑定变量的区别,后面的两个问题都是这个事情引起的
      

  4.   

    VARIABLE jobno NUMBER 
    BEGIN
       DBMS_JOB.SUBMIT(:jobno, 
          .............. 
       COMMIT;
    END;
    /
    PRINT jobno
      

  5.   

    在SQL*PLUS中,VARIABLE为SQL*PLUS语句,这个语句定义的变量是捆绑变量,在SQL或PL/SQL中使用时要在前面增加一个冒号以区分,如:VARIABLE myvar VARCHAR2(10)
    BEGIN
      :myvar := 'JONES';
    END;
    /SELECT :myvar FROM dual;PRINT
    而在PL/SQL中定义的变量则为PLSQL变量,只能在本PL/SQL块中使用,使用时不用加冒号,如DECLARE
      myvar VARCHAR2(10);
    BEGIN
      myvar := 'JONES';
      DBMS_OUTPUT.PUT_LINE(myvar);
    END;
    /
      

  6.   


    variable job1 number;
    --给一个例子
    begin
      sys.dbms_job.submit(job => :job1,
                          what => 'begin CDM_Delete_PRC;end;',
                          next_date => to_date('15-04-2009 14:03:25', 'dd-mm-yyyy hh24:mi:ss'),
                          interval => 'to_date(to_char(sysdate, ''yyyy-mm-dd''), ''yyyy-mm-dd HH24:MI:SS'')+1+1/24');
      commit;
    end;
    /
      

  7.   


    --给一个例子
    variable job1 number;
    begin
      sys.dbms_job.submit(job => :job1,
                          what => 'begin CDM_Delete_PRC;end;',
                          next_date => to_date('15-04-2009 14:03:25', 'dd-mm-yyyy hh24:mi:ss'),
                          interval => 'to_date(to_char(sysdate, ''yyyy-mm-dd''), ''yyyy-mm-dd HH24:MI:SS'')+1+1/24');
      commit;
    end;
    /