存储过程调存储过程实例
来源:互联网 发布:阿里在线编程测验 编辑:程序博客网 时间:2024/06/04 19:57
-- 创建table
create table tab_time(
current_time timestamp
);
create table tab_time2(
current_time timestamp
);
-- 创建存储过程
create or replace procedure pro_job_print
as
begin
--dbms_output.put_line('系统时间:' || to_char(sysdate, 'dd-mm-yyyy hh24:mi:ss'));
insert into tab_time values(sysdate);
end;
create or replace procedure pro_job_print2
as
begin
--dbms_output.put_line('系统时间:' || to_char(sysdate, 'dd-mm-yyyy hh24:mi:ss'));
insert into tab_time values(sysdate);
end;
-- 调用过程测试
call students.pro_job_print();
call students.pro_job_print2();
select a.*,a.rowid from tab_time a;
select a.*,a.rowid from tab_time2 a;
--方式1
create or replace procedure call_proc_all_test as
begin
pro_job_print();
pro_job_print2();
exception
when others then
dbms_output.put_line('SQL CODE:' || sqlcode || chr(10) || sqlerrm ||
chr(10) || dbms_utility.format_error_backtrace());
end;
call call_proc_all();
--存放存储过程信息的表 将需要调的存储过程名字及其他信息放到一张表里
create table students.proc_list(
ID Number(4) NOT NULL PRIMARY KEY,
proc_order number(4),
proc_name varchar2(200),
proc_desc varchar2(200),
proc_user varchar2(50)
)
--序列
CREATE SEQUENCE proc_list_sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
NOCACHE -- 不建缓冲区
select a.*,a.rowid from students.proc_list a;
insert into students.proc_list values (proc_list_sequence.nextval,1,'pro_job_print','打印表','students');
insert into students.proc_list values (proc_list_sequence.nextval,2,'pro_job_print2','打印表2','students');
--日志表的序列
CREATE SEQUENCE log_sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
NOCACHE -- 不建缓冲区
--调用存储过程 方式2
create or replace procedure call_proc as
v_name varchar2(200);
v_sql varchar2(4000);
cursor v_task is --声明游标
select proc_name from students.proc_list a order by a.proc_order desc;
begin
open v_task; --打开游标
--循环游标
loop
fetch v_task
into v_name; --取值
exit when v_task%notfound; --当没有记录时退出循环
dbms_output.put_line('proc_name=' || v_name);
v_sql := 'call ' || v_name || '()';
execute immediate v_sql;
end loop;
close v_task;
end;
select proc_name from students.proc_list a order by a.proc_order desc;
--创建日志表
create table students.call_proc_log(
ID Number(9) NOT NULL PRIMARY KEY,
excu_sql varchar2(2000),
exec_result varchar2(200),
exec_time date
)
call students.call_proc();
select a.*,a.rowid from tab_time a;
select * from tab_time2;
select * from students.call_proc_log;
create table tab_time(
current_time timestamp
);
create table tab_time2(
current_time timestamp
);
-- 创建存储过程
create or replace procedure pro_job_print
as
begin
--dbms_output.put_line('系统时间:' || to_char(sysdate, 'dd-mm-yyyy hh24:mi:ss'));
insert into tab_time values(sysdate);
end;
create or replace procedure pro_job_print2
as
begin
--dbms_output.put_line('系统时间:' || to_char(sysdate, 'dd-mm-yyyy hh24:mi:ss'));
insert into tab_time values(sysdate);
end;
-- 调用过程测试
call students.pro_job_print();
call students.pro_job_print2();
select a.*,a.rowid from tab_time a;
select a.*,a.rowid from tab_time2 a;
--方式1
create or replace procedure call_proc_all_test as
begin
pro_job_print();
pro_job_print2();
exception
when others then
dbms_output.put_line('SQL CODE:' || sqlcode || chr(10) || sqlerrm ||
chr(10) || dbms_utility.format_error_backtrace());
end;
call call_proc_all();
--存放存储过程信息的表 将需要调的存储过程名字及其他信息放到一张表里
create table students.proc_list(
ID Number(4) NOT NULL PRIMARY KEY,
proc_order number(4),
proc_name varchar2(200),
proc_desc varchar2(200),
proc_user varchar2(50)
)
--序列
CREATE SEQUENCE proc_list_sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
NOCACHE -- 不建缓冲区
select a.*,a.rowid from students.proc_list a;
insert into students.proc_list values (proc_list_sequence.nextval,1,'pro_job_print','打印表','students');
insert into students.proc_list values (proc_list_sequence.nextval,2,'pro_job_print2','打印表2','students');
--日志表的序列
CREATE SEQUENCE log_sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
NOCACHE -- 不建缓冲区
--调用存储过程 方式2
create or replace procedure call_proc as
v_name varchar2(200);
v_sql varchar2(4000);
cursor v_task is --声明游标
select proc_name from students.proc_list a order by a.proc_order desc;
begin
open v_task; --打开游标
--循环游标
loop
fetch v_task
into v_name; --取值
exit when v_task%notfound; --当没有记录时退出循环
dbms_output.put_line('proc_name=' || v_name);
v_sql := 'call ' || v_name || '()';
execute immediate v_sql;
end loop;
close v_task;
end;
select proc_name from students.proc_list a order by a.proc_order desc;
--创建日志表
create table students.call_proc_log(
ID Number(9) NOT NULL PRIMARY KEY,
excu_sql varchar2(2000),
exec_result varchar2(200),
exec_time date
)
call students.call_proc();
select a.*,a.rowid from tab_time a;
select * from tab_time2;
select * from students.call_proc_log;
0 0
- 存储过程调存储过程实例
- oracle存储过程实例,mybatis调oracle存储过程
- 存储过程几个实例
- Mysql存储过程实例
- 存储过程经典实例
- 存储过程实例(一)
- 存储过程实例(二)
- ORcale 存储过程实例
- 存储过程 实例
- 存储过程实例
- Oracle 存储过程实例
- 存储过程知识点(实例)
- MySQL存储过程实例
- Mysql存储过程实例
- Oracle存储过程实例
- 存储过程实例
- MySQL存储过程实例
- Mysql存储过程实例
- 【Scrapy】Spiders爬虫
- 深入Java集合学习系列:HashMap的实现原理
- backpack ii
- 在SQL Server中快速删除重复记录
- hdu 1576 A/B
- 存储过程调存储过程实例
- 第四章t2
- 进程、线程小结(1)
- 石子合并问题
- 【Unity】Unity中影响性能的几个因素
- 【leetcode】 Bitwise AND of Numbers Range
- Google-Guava-EventBus源码解读
- 【数据可视化】数据可视化分类
- bzoj 3261: 最大异或和