想了解oracle job的用法在PLSQL中创建触发器的适合报错
大家看红色重点标注的地方

Compilation errors for TRIGGER YLB2012.TRI_TEST_IDError: PLS-00103: 出现符号 "?"在需要下列之一时:
        begin function
          pragma procedure subtype type <an identifier>
          <a double-quoted delimited-identifier> current cursor delete
          exists prior
Line: 5
Text: ??nextid?number;求高手帮忙解释啊 小弟刚学oracle1个星期 求老鸟多多指教
我网上找了个例子
3.实例 这里提供了一个简单的例子,主要是完成在每一个时间间隔内向一个表中插入一条记录   1)创建测试表  
Java代码  
    
 SQL>   create   table   test(id number,cur_time   date);     
  表已创建。   
建sequence   
-- Create sequence 
create sequence TEST_SEQUENCE
minvalue 1
maxvalue 9999999999999999999999999999
start with 1
increment by 1
cache 10;
 
 SQL>   create   table   test(id number,cur_time   date);  
  表已创建。
----建sequence
CREATE  SEQUENCE test_sequence
INCREMENT  BY   1    --  每次加几个 
 START  WITH   1     --  从1开始计数 
 NOMAXVALUE     --  不设置最大值 
 NOCYCLE      --  一直累加,不循环 
 CACHE  10 ;
--建触发器代码为: 
Java代码 
 
create or replace trigger tri_test_id   
  before insert on test   --test 是表名   
  for each row   
declare   
  nextid number;   
begin   
  IF :new.id IS NULLor :new.id=0 THEN --id是列名   
    select test_sequence.nextval --SEQ_ID正是刚才创建的   
    into nextid   
    from sys.dual;   
    :new.id:=nextid;   
  end if;   
end tri_test_id;
        
     2)创建一个自定义过程  
Java代码  
  
SQL>   create   or   replace   procedure   proc_test   as     
     2     begin     
     3     insert   into   test(cur_time)   values(sysdate);     
     4     end;     
     5     /   
   
 
 SQL>   create   or   replace   procedure   proc_test   as  
      2     begin  
      3     insert   into   test(cur_time)   values(sysdate);  
      4     end;  
      5     /
  
  过程已创建。       3)创建JOB  
Java代码  
SQL> declare job1 number;   
     begin   
        dbms_job.submit(job1,'proc_test;',sysdate,'sysdate+1/1440');--每天1440分钟,即一分钟运行test过程一次   
    end;  
  SQL> declare job1 number;
       begin
          dbms_job.submit(job1,'proc_test;',sysdate,'sysdate+1/1440');--每天1440分钟,即一分钟运行test过程一次
      end;
     PL/SQL   JOB已成功完成。 在PLSQL中创建触发器的适合报错Compilation errors for TRIGGER YLB2012.TRI_TEST_IDError: PLS-00103: 出现符号 "?"在需要下列之一时:
        begin function
          pragma procedure subtype type <an identifier>
          <a double-quoted delimited-identifier> current cursor delete
          exists prior
Line: 5
Text: ??nextid?number;求高手帮忙解释啊 小弟刚学oracle1个星期 求老鸟多多指教

解决方案 »

  1.   

     IF :new.id IS NULLor :new.id=0 THEN --id是列名 
    又是粗心惹的祸,这一句,NULL和or之间加个空格create or replace trigger tri_test_id   
      before insert on test   --test 是表名   
      for each row   
    declare   
      nextid number;   
    begin   
      IF :new.id IS NULL or :new.id=0 THEN --id是列名   
        select test_sequence.nextval --SEQ_ID正是刚才创建的   
        into nextid   
        from sys.dual;   
        :new.id:=nextid;   
      end if;   
    end tri_test_id;