怎样实现每天自动执行oracle的存储过程一次?
用job
成都创新互联公司网站建设公司,提供网站设计制作、成都网站建设,网页设计,建网站,PHP网站建设等专业做网站服务;可快速的进行网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,是专业的做网站团队,希望更多企业前来合作!
oracle定时器调用存储过程
1、创建一个表,为了能清楚看到定时器的运行情况我们创建一个带有日期字段的表
Sql代码
create table job_table(run_time date);
create table job_table(run_time date);
2、创建存储过程
Sql代码
create or replace procedure job_proc is
begin
insert into job_table (run_time) values (sysdate);
end;
create or replace procedure job_proc is
begin
insert into job_table (run_time) values (sysdate);
end;
3、创建job,并且指定为一分钟执行一次
Sql代码
declare
job number;
begin
dbms_job.submit(job, 'job_proc;', sysdate, 'TRUNC(sysdate,''mi'') + 1 / (24*60)');
end/
commit;
declare
job number;
begin
dbms_job.submit(job, 'job_proc;', sysdate, 'TRUNC(sysdate,''mi'') + 1 / (24*60)');
end/
commit;
4.创建之后自动处于运行状态,我们查询job表,看看我们创建的job
Sql代码
select job,broken,what,interval,t.* from user_jobs t;
select job,broken,what,interval,t.* from user_jobs t;
job broken what interval ...
81 N job_proc; TRUNC(sysdate,'mi') + 1 / (24*60) ...
用job
oracle定时器调用存储过程
创建一个表,为了能清楚看到定时器的运行情况我们创建一个带有日期字段的表
Sql代码
create table job_table(run_time date);
create table job_table(run_time date);
2.创建存储过程
Sql代码
create or replace procedure job_proc is
begin
insert into job_table (run_time) values (sysdate);
end;
create or replace procedure job_proc is
begin
insert into job_table (run_time) values (sysdate);
end;
3.创建job,并且指定为一分钟执行一次
Sql代码
declare
job number;
begin
dbms_job.submit(job, 'job_proc;', sysdate, 'TRUNC(sysdate,''mi'') + 1 / (24*60)');
end/
commit;
declare
job number;
begin
dbms_job.submit(job, 'job_proc;', sysdate, 'TRUNC(sysdate,''mi'') + 1 / (24*60)');
end/
commit;
4.创建之后自动处于运行状态,我们查询job表,看看我们创建的job
Sql代码
select job,broken,what,interval,t.* from user_jobs t;
select job,broken,what,interval,t.* from user_jobs t;
job broken what interval ...
81 N job_proc; TRUNC(sysdate,'mi') + 1 / (24*60) ...
如何在oracle数据更新时自动执行java代码,谢绝使用监听器,抓包等功能,因为产生的数量实在太大。
写一个after update的trigger,再写一个存储过程,trigger调用存储过程,存储过程调用java程序。
----------------------------建立一个java存储过程
1. 先看一下这个目录
[oracle@ocean ~]$ pwd
/home/oracle
[oracle@ocean ~]$ ls -l
total 8
-rw-r--r-- 1 oracle orains 604 Dec 26 2006 bash
2. 连接到test用户
SQL conn test/test
Connected.
3. 授于test用户文件读写和执行命令的权限
SQLexec dbms_java.grant_permission('TEST','SYS:java.io.FilePermission','ALL FILES','read,write,execute,delete');
PL/SQL procedure successfully completed.
SQLexec dbms_java.grant_permission('TEST','java.lang.RuntimePermission','*','writeFileDescriptor' );
PL/SQL procedure successfully completed.
4. 建立java存储过程,注意,这里的exp 路径和dmp文件的路径是数据库服务器的路径
create or replace and compile java source named "aa"
as
import java.io.*;
import java.lang.*;
import java.util.*;
import java.sql.*;
import oracle.sql.*;
public class aa
{
public static void invoke_exe() throws IOException
{
Process p=Runtime.getRuntime().exec("/oracle/product/9.2.4/bin/exp userid=test/test file=/home/oracle/test.dmp");
try
{
p.waitFor();
}catch(InterruptedException ie){System.out.println(ie);}
}
}
/
Java created.
Elapsed: 00:00:00.01
5. 建立调用java存储过程的存储过程call_aa
create or replace procedure call_aa
as language java
name 'aa.invoke_exe()';
/
6. 执行java存储过程
exec call_aa;
7. 检查一下dmp文件是否已经生成
[oracle@ocean ~]$ pwd
/home/oracle
[oracle@ocean ~]$ ls -l
total 28
-rw-r--r-- 1 oracle orains 604 Dec 26 2006 bash
-rw-r--r-- 1 oracle orains 16384 Jul 3 14:12 test.dmp
-----------------
exec dbms_Java.Grant_Permission('TEST', 'java.io.FilePermission', 'ALL FILE', 'read ,write, execute, delete');
exec dbms_Java.Grant_Permission('TEST', 'java.io.FilePermission', 'd:aa.bat', 'read ,write, execute, delete');
exec dbms_java.grant_permission('TEST','java.lang.RuntimePermission','*','writeFileDescriptor' );
c#执行oracle里面的package是怎么实现的,要代码
代码如下:
CREATE OR REPLACE PACKAGE BODY Interface_PKG AS
PROCEDURE GetTableData(IN_WorkDate IN Date, IO_CURSOR OUT T_CURSOR) IS
V_CURSOR T_CURSOR;
BEGIN
OPEN V_CURSOR FOR
select *
from 测试表
where workdate = IN_WorkDate;
IO_CURSOR := V_CURSOR;
End GetTableData;
END Interface_PKG;
扩展资料
PACKAGE分SPEC和body两部分:
1、SPEC是声明部分:
CREATE OR REPLACE PACKAGE FirstPage is
type outlist is ref cursor;
Procedure p_get( maxrow in number, minrow in number, return_list out outlist );
function f_get(str in varchar2)return varchar2;
END FirstPage;
2、BODY是功能实现部分:
CREATE OR REPLACE package body FirstPage is
Procedure p_get( maxrow in number, minrow in number, return_list out outlist )
is begin open return_list for
select * from (select a.*,rownum rnum from IPS_WL_INNOLUXPN a where rownum=maxrow) where rnum =minrow;
end ;
oracle 怎么运行SQl脚本
连接数据库SQL connect / as sysdba
运行脚本SQL @/admin/XX.sql 这里的/adminXX.sql 是绝对路径名, linux系统的话要注意 目录权限问题,windows就不用。
分享文章:oracle如何执行代码 oracle数据库代码执行
文章分享:http://scpingwu.com/article/hpcehj.html