我想用oracle触发器做一个定时触发 但是不知道怎么写 请各位大哥帮帮忙啊 具体如下我现在有一个表,我想在某一天比如8月8号让它对我表中的某列数据自动+1,问题是如何让oracle在8月8日这一天执行这个触发过程,大家都帮忙想一下啊 ,留下你们的思路,谢了~~·
解决方案 »
- oracle 物化视图 ,提示 表或视图不存在
- 是oracle的bug么?散分了!
- 我想在 oracle 中查找 在 2006-7-10 到 2007-7-71 间信息怎么写??(求助)
- 兄弟们,帮我看看这个存储过程有什么错误.
- 要建索引,看了篇文章,说修改下排序内存差数,可以加快,请问那里可以修改???
- 连接问题
- 怎样用游标返回临时表
- 在Linux下Oracle500M数据导入到内存速度问题?
- VC COM 中连接ORACLE9I 要疯掉了,高分相送
- 采用什么方式效率更高?
- oracle 不能用WITH NOCHECK吗,为什么下面这句总提示非法的 ALTER TABLE 选项
- oracle触发器insert时,数据的连接符问题[在线给分]
CREATE OR REPLACE PROCEDURE update_table
IS
BEGIN
UPDATE a
SET a.a=a.a+1; COMMIT;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
NULL;
WHEN OTHERS
THEN
-- Consider logging the error and then re-raise
RAISE;
END update_table;然后再建个JOB
DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
( job => X
,what => 'update_table;'
,next_date => to_date('08/08/2008 00:00:00','dd/mm/yyyy hh24:mi:ss')
,no_parse => FALSE
);
SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));
COMMIT;
END;
8月8号这天会自动执行的
这样就可以定时执行啦。在存储过程中进行逻辑处理。
IS
BEGIN
UPDATE a
SET a.a=a.a+1; COMMIT;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
NULL;
WHEN OTHERS
THEN
-- Consider logging the error and then re-raise
RAISE;
END update_table;learning...
然后open cur for str。
事先这个str整理好就行了。
如何处理v_strTrueSendNo呢?
直接替换,-〉','
方法'''' || replace(v_strTrueSendNo,',',''',''') || ''''
给个例子
CREATE OR REPLACE PROCEDURE CURNAME
IS
aaa sys_refcursor;
str varchar2(4000);
vp varchar2(4000);
BEGIN
vp :='12345,67890';
vp :='''' || replace(vp,',',''',''') || '''';
str := 'select to_char(sysdate,''YYYYMMDD'') from dual where ''67890'' in(' || vp || ')';
open aaa for str;
fetch aaa into vp;
close aaa;
dbms_output.put_line(vp);
END;