序列如何更新oracle 如何让序列号自动更新

如何循环更新oracle一列的值

哥们,不用循环吧?再说用循环也不能解决吧,循环你的值怎么赋?你怎么知道下个记录该更新成什么?

为石楼等地区用户提供了全套网页设计制作服务,及石楼网站建设行业解决方案。主营业务为成都网站设计、成都做网站、石楼网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

通过to_char(to_date(logintime,'yy-mm-dd'),'yyyy-mm-dd')试试可不可转换,没环境没法试,不行的话用instr函数,一句update就行了,不过我现在没时间写代码,给你个思路

instr((logintime,'-',1)可以取出第一个-的位置,然后通过substr(logintime,1,instr((logintime,'-',1)-1)取出第一个-前面的部分,就是年,20||就行了,然后再用instr(logintime,'-',2)

--这个是第2个-的位置,知道第1、2个-的位置后还是通过substr取出第1个-和第2个-之间的字符,就是月,case when一下如果是1位就补个0,。。。。依次类推,麻烦是麻烦点,但是比较通用,能适应各种情况,不过日期的话应该有规律,应该能根据规律简化不少,你自己琢磨吧.

如果你非要用循环可通过rowid这个伪列,即定义一个参数做计数用,循环一次加1,直到等于max(rowid)为止,不过我实在想不出用循环怎么弄,期待高手。。。

oracle定时更新(JOBS)

oracle定时更新(JOBS)

rm.pro_hrm_emp_info_job过程

需要每天都更新,所以先创建个procedure,再创建个job就可以实现定时更新

create or replace procedure rm.pro_hrm_emp_info_job is

zm

begin

update rm.hrm_emp_info

set ages = to_number(TRUNC(nvl((sysdate brith_date) / 365, 0))),

leng_serv = to_number(TRUNC(nvl((sysdate work_date) / 365, 0))),

ins_len_ser = to_number(TRUNC(nvl((sysdate ente_appe_date) / 365,

0)));

commit;

end pro_hrm_emp_info_job;

相应的`job

declare

jobno number;

begin

dbms_job.submit(jobno,’rm.pro_hrm_emp_info_job;’,trunc(sysdate),’trunc(sysdate)+1’);每天零点更新

commit;

end;

/

分解下job

dbms_job.submit(jobno, job号,由sys.jobseq生成

’rm.pro_hrm_emp_info_job;’, 要执行的procedure

trunc(sysdate), 下次要执行的时间

’trunc(sysdate)+1’); 每次间隔的时间,此处的1标识一天 也可1/1440每一分钟执行一次

查看

select * from sys.user_jobs;

其中创建的jobno(任务号)由sys.jobseq序列生成

主由packages中的sys.dbms_job执行

细节可以查看sys.dbms_job包内容。 ;

oracle中sequence批量更新一下,怎么写

主键表 - T表 '100W'数据同步到T1表(同步:TRUNCATE/DELETE或IMPDP...等方式[手动改数据])

例如: T表对应SEQ_T.NEXTVAL= 100W;

T1表对应SEQ_T.NEXTVAL= 10W;

TRUNCATE TABLE T1;

INSERT TABLE T1 SELECT * FROM T;

数据同步但T1表对应SEQ_T.NEXTVAL= 10W序列不变;

此时T1调用序列INSERT到T1表时就会报错 ( ORA-00001 : 违反唯一约束条件 (LOTTERY.PK_T1))

(若批量同步很多表就可能会引起很多表序列需要更新成主键最大值+ 1才能保证不报错

(可以用把源库的SEQUENCE同步过来①或者如下存储解决② ))

oracle 怎样使UPDATE 更新序列??

可以使用update select 语法进行更新

喜欢研究的可以自行学习下,以便积累

不想浪费时间可以看下面:

UPDATE A SET ID = (SELECT ROWNUM FROM A ORDER BY 时间 DESC)

参考语法:

UPDATE A SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)

WHERE ID IN (SELECT B.ID FROM B WHERE A.ID = B.ID)

oracle 怎样用UPDATE 更新序列??

update A

set id = id +100

where id = (一共有多少条记录)

这样好像就可以了


分享标题:序列如何更新oracle 如何让序列号自动更新
本文网址:http://pwwzsj.com/article/hhdpej.html