一:存储过程
(
图片左边的
procedure
目录
)
:
在数据库的实际开发过程中,我们不可能每个脚本用人工的方式执行,需要自动的批量提交脚本到数据库执行,数据库就提供了像存储过程这样的对象,方便开发人员把处理某个功能或报表的逻辑写到存储过程里。
1)
存储过程的优点:
a.
执行速度更快:在数据库中保存的存储过程语句都是编译过的
b.
允许模块化程序设计和可移植性更强:类似方法的复用(使用存储过程可以实现存储过程设计和编码工作的分开进行,只要将存储过程名、参数、返回信息等告诉编程人员即可);
c.
提高系统安全性:防止
SQL
注入
(执行存储过程免费云主机域名的用户要具有一定的权限才能使用存储过程)
d.
减少网络流通量:只要传输存储过程的名称(在大批数据查询时使用存储过程分页查询比其他方式的分页要快很多)
e.
在同时进行逐主、从表间的数据维护及有效性验证时,使用存储过程更加方便,可以有效的利用
SQL
中的事务处理机制。
创建存储
2)
创建语法:
create
or
replace
procedure
p_house_create_data(p_fm_dt
date
default
sysdate
–
1
,
p_to_dt
date
default
sysdate
)
is
/************************************************************
author :hf
created :2018-08-08
purpose :
生成数据过程
parameter value
p_fm_dt 2018-08-01(
昨天
)
p_to_dt 2018-08-02(
当日
)
*************************************************************/
/************************************************************
定义区间
*************************************************************/
v_sqlstate
varchar2
(
500
);
v_proc_name
varchar2
(
64
) :=
‘p_house_create_data’
;
v_fm_dt
date
;
v_to_dt
date
;
begin
/************************************************************
赋值区间
*************************************************************/
v_sqlstate :=
‘
赋值
‘
;
v_fm_dt :=
trunc
(p_fm_dt,
‘DD’
);
v_to_dt :=
trunc
(p_to_dt,
‘DD’
);
/************************************************************
计算区间
*************************************************************/
v_sqlstate :=
‘
开始
‘
;
pkg_rpt_system.sys_log(v_proc_name, v_sqlstate,
‘OK’
,
null
,
null
);
—
写日志
v_sqlstate :=
‘
删除数据
‘
;
delete
t_landlord;
commit
;
v_sqlstate :=
‘
生成房东信息数据
‘
;
insert
into
t_landlord
values
(
‘001’
,
‘
张强
‘
,
‘
男
‘
,
‘13723870069’
,
‘001’
,
‘2010-03-12’
);
commit
;
/************************************************************
结束区间
*************************************************************/
v_sqlstate :=
‘
结束
‘
;
pkg_rpt_system.sys_log(v_proc_name, v_sqlstate,
‘OK’
,
null
,
null
);
—
写日志
/************************************************************
异常区间
*************************************************************/
exception
when
others
then
rollback
;
—
回滚数据
pkg_rpt_system.sys_log(v_proc_name,
v_sqlstate,
‘ERROR’
,
sqlcode
,
substr
(
sqlerrm
,
1
,
3000
));
—
写日志
commit
;
end
p_house_create_data;
二:包
(
图片左边的
package bodies
目录
)
:
其实包可以理解为是对存储过程和函数的方便管理,如果过程和函数多了,不方便查找,比较乱,哪么我们可以把相关的过程放在一起,或把业务逻辑相关的放在一起维护。
1)
包的构成:
a.
包头:是对包里的过程和函数的一个定义,相关于目录
b.
包体:是对包里的过程和函数的实现,具体代码的逻辑实现。
2)
创建语法:
—
包头
create
or
replace
package
pkg_abc_create_data
is
procedure
p_house_create_data(p_fm_dt
date
default
sysdate
–
1
,
p_to_dt
date
default
sysdate
);
end
pkg_abc_create_data;
—
包体
create
or
replace
package
body
pkg_abc_create_data
is
procedure
p_house_create_data(p_fm_dt
date
default
sysdate
–
1
,
p_to_dt
date
default
sysdate
)
is
/************************************************************
author :hf
created :2018-08-08
purpose :
生成数据过程
parameter value
p_fm_dt 2018-08-01(
昨天
)
p_to_dt 2018-08-02(
当日
)
*************************************************************/
/************************************************************
定义区间
*************************************************************/
v_sqlstate
varchar2
(
500
);
v_proc_name
varchar2
(
64
) :=
‘p_house_create_data’
;
v_fm_dt
date
;
v_to_dt
date
;
begin
/************************************************************
赋值区间
*************************************************************/
v_sqlstate :=
‘
赋值
‘
;
v_fm_dt :=
trunc
(p_fm_dt,
‘DD’
);
v_to_dt :=
trunc
(p_to_dt,
‘DD’
);
/************************************************************
计算区间
*************************************************************/
v_sqlstate :=
‘
开始
‘
;
pkg_rpt_system.sys_log(v_proc_name, v_sqlstate,
‘OK’
,
null
,
null
);
v_sqlstate :=
‘
删除数据
‘
;
delete
t_landlord;
commit
;
v_sqlstate :=
‘
生成房东信息数据
‘
;
insert
into
t_landlord
values
(
‘001’
,
‘
张强
‘
,
‘
男
‘
,
‘13723870069’
,
‘001’
,
‘2010-03-12’
);
commit
;
/************************************************************
结束区间
*************************************************************/
v_sqlstate :=
‘
结束
‘
;
pkg_rpt_system.sys_log(v_proc_name, v_sqlstate,
‘OK’
,
null
,
null
);
/************************************************************
异常区间
*************************************************************/
exception
when
others
then
rollback
;
pkg_rpt_system.sys_log(v_proc_name,
v_sqlstate,
‘ERROR’
,
sqlcode
,
substr
(
sqlerrm
,
1
,
3000
));
commit
;
end
p_house_create_data;
end
pkg_abc_create_data;
相关推荐: Oracle RAC实施方案详细说明-安装后的检查06
Oracle RAC 实施方案详细说明 – 安装后的检查 06 查看数据库版本 SQL> select * from v$version; 查看集群名称 [root@rac01 bin]# ./cemutlo –help [root@rac01 bin…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。