当前位置: 代码迷 >> Oracle管理 >> 问个触发器小疑点
  详细解决方案

问个触发器小疑点

热度:104   发布时间:2016-04-24 04:58:46.0
问个触发器小问题
想了解oracle job的用法

在PLSQL中创建触发器的适合报错
大家看红色重点标注的地方

Compilation errors for TRIGGER YLB2012.TRI_TEST_ID

Error: 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;??
  相关解决方案