十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
使用oracle调用存储过程得方式和plsql不一样,下面给你个调用例子
创新互联建站于2013年开始,先为崇仁等服务建站,崇仁等地企业,进行企业商务咨询服务。为崇仁企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
过程调用方式一
declare
realsal emp.sal%type;
realname varchar(40);
realjob varchar(40);
begin //存储过程调用开始
realsal:=1100;
realname:='';
realjob:='CLERK';
runbyparmeters(realsal,realname,realjob); --必须按顺序
DBMS_OUTPUT.PUT_LINE(REALNAME||' '||REALJOB);
END; //过程调用结束
过程调用方式二
declare
realsal emp.sal%type;
realname varchar(40);
realjob varchar(40);
begin //过程调用开始
realsal:=1100;
realname:='';
realjob:='CLERK';
runbyparmeters(sname=realname,isal=realsal,sjob=realjob); --指定值对应变量顺序可变
DBMS_OUTPUT.PUT_LINE(REALNAME||' '||REALJOB);
END; //过程调用结束
sqlplus或者pl/sql
sql窗口
输入(单独调用存储过程):
无参数
exec
过程名;
或者
begin
过程名
end;
in
参数
exec
过程名(入参数..);
或者
begin
过程名(入参数...)
end;
out参数,in
out参数
variable
绑定变量名
数据类型;
//定义一个变量接收出参数的值;
exec
过程名(:绑定变量名);
以下的文章主要介绍的是Oracle delete的执行过程 我们大家都知道Oracle delete与Commit的实际操作的相关流程的具体分析 以下就是对其实际的操作流程的介绍 望你在浏览之后会有所收获
( )删除(delete)流程
Oracle读Block(数据块)到Buffer Cache(缓冲区)(如果该Block在Buffer中不存在)
在Redo Log Buffer(重做日志缓冲区)中记录Oracledelete操作的细节
在相应回滚段段头的事物表中创建一个Undo(回滚)条目
把将要删除的记录创建前镜像 存放到Undo Block(回滚块)中
在Buffer Cache中的相应数据块上删除记录 并且标记相应的数据块为Dirty(脏)
( )提交(Commit)流程
Oracle产生一个SCN
在回滚段事物表中标记该事物状态为Commited
LGWR(日志读写进程)Flush Log Buffer到日志文件
如果此时数据块仍然在Buffer Cache中 那么SCN将被记录到Block Header上 这被称为快速提交
lishixinzhi/Article/program/Oracle/201311/18643
用job
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) ...
sqlplus或者PL/SQL
SQL窗口
输入(单独调用存储过程):
无参数
EXEC
过程名;
或者
BEGIN
过程名
END;
IN
参数
EXEC
过程名(入参数..);
或者
BEGIN
过程名(入参数...)
END;
OUT参数,IN
OUT参数
variable
绑定变量名
数据类型;
//定义一个变量接收出参数的值;
EXEC
过程名(:绑定变量名);