重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
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包内容。 ;
可以用以下SQL试试,如果有一对多的情况在b.name=a.name后面加个 and rownum=1:
upddate table_a a set a.lname =(select '前缀字符串'||b.lname from table_b b
where b.id=a.id and b.name=a.name)
在安装oracle数据库的时候,一般就把数据库给创建了。当使用Database Configuration Assistant工具创建另外一个数据库的时候,一般数据库默认的数据路径放在oracle安装路径下面(例如:C:\oracle\oradata)。为了提高数据库的性能,一般oracle的主目录和数据文件要分别放在不同的盘中。而且系统C盘很容易崩溃,且空间小,不小心数据将随系统的崩溃而消失,那样损失将是无法估量的。一般用Database Configuration Assistant工具创建数据库时并不提示你修改路径。而且这个修改的路径也不容易找到。
具体方法如下:假设这里安装的数据库名是XLJC。
1:找到数据库XLJC下面的文件pfile,在pfile中用文本编辑器打开orit.ora文件。这里的路径是C:\oracle\admin\XLJC\pfile
找到行control_files=("c:\oracle\oradata\XLJC\control01.ctl", "c:\oracle\oradata\XLJC\control02.ctl", "c:\oracle\oradata\XLJC\control03.ctl")
将盘符c:变成你所要存放的盘符,比如d:,然后保存退出。
2:找到oracle数据默认的存放路径,例如这里是:
C:\oracle\oradata\XLJC
在d:盘下面建立同样的目录,例如d:\oracle\oradata。然后把整个XLJC文件夹复制到所建立的目录下即可。(C:\oracle\oradata\XLJC目录下存有有数据库的控制文件,创建表空间的时候,表空间文件就和这些控制文件在同一目录下)。
然后就可以打开oracle数据库平台在你修改后的路径下创建表空间了。
通过Update语句将A表的某列值修改为B表中的指定列的值时,所用的sql语句在Oracle和SQL Server中是不一样的,
代码如下:
Oracle中的语句:
UPDATE A
SET A.COL1=(SELECT B.COL1 from B where A.KEY=B.KEY [and 其它限制(可选)] )
where 其它条件
SQL Server中更新语句:
update A
SET A.COL1=B.COL1
FROM A,B where A.KEY=B.KEY where 其它条件限制
若关联条件为多个,where后面用and 连接指定条件即可
oracle触发器将数据插入到另一个服务器的oracle数据库中要用dblink实现两台服务器的数据共享。
oracle db_link 和触发器实现不同数据库表的同步
---创建dblink,dblink_test名称,(被同步数据库的a_test)ST10766用户名,ep密码,ass100连接字符串
create public database link dblink_test
connect to ST10766 identified by ep
using 'ass100';
---删除dblink
----drop public database link dblink_test;
----建立表
create table a_test (id int,name varchar(20),pass varchar(20))
select * from a_test;
insert into a_test (id,name,pass) values (1,'zzn','shanshan')
insert into b_test (id,username,password) values('1','zxl','xiaolan')
----在目的数据库上,测试dblink,查询的是源数据库的表
select * from a_test@dblink_orc10;
select * from a_test;
----创建触发器
create or replace trigger a_b_test
after insert or update or delete
on a_test
for each row
begin
if deleting then
delete from b_test where id=:old.id;
end if;
if inserting then
insert into b_test(id,username,password) //b_test表的字段
values(:new.id,:new.name,:new.pass); //a_test表的字段
end if;
if updating then
update b_test set username=:new.name,password=:new.pass where id=:old.id;
end if;
end a_b_test;