当前位置:首页 » 存储配置 » oracle触发器与存储过程

oracle触发器与存储过程

发布时间: 2023-03-23 02:36:13

⑴ oracle的存储过程

1.存储过程可以使得程序执行效率更高、安全性更好,因为过程建立之后 已经编译并且储存到数据库,直接写sql就需要先分析再执行因此过程效率更高,直接写sql语句会带来安全性问题,如:sql注入
2.建立过程不会很耗系统资源,因为过程只是在调用才执行。
3.存储过程可以用于降低网络流量,存储过程代码直接存储于数据库中,所以不会产生大量T-sql语句的代码流量。

4.使用存储过程使您能够增强对执行计划的重复使用,由此可以通过使用远程过程调用 (RPC) 处理服务器上的存储过程而提高性能。RPC 封装参数和调用服务器端过程的方式使引擎能够轻松地找到匹配的执行计划,并只需插入更新的参数值。

5.可维护性高,更新存储过程通常比更改、测试以及重新部署程序集需要较少的时间和精力。

6.代码精简一致,一个存储过程可以用于应用程序代码的不同位置。

7.增强安全性:
a、通过向用户授予对存储过程(而不是基于表)的访问权限,它们可以提供对特定数据的访问;
b、提高代码安全,防止 SQL注入(但未彻底解决,例如,将数据操作语言--DML,附加到输入参数);
c、SqlParameter 类指定存储过程参数的数据类型,作为深层次防御性策略的一部分,可以验证用户提供的值类型(但也不是万无一失,还是应该传递至数据库前得到附加验证)。

缺点就是:
1、大量的利用过程,会对服务器压力比较大。

⑵ oracle触发器调用存储过程报错

call
和exce
调用
存储过程
是在slqplus及command窗口里面,在程序及sql窗口里面
用begin
end调用,或者采用动态执行的方法调用
你直接调用即可,不需call

⑶ 如何在存储过程中建立触发器

(1).存储过程:
create
procere
for_select(你想用的触发器名字)
delare
@name
char(8)
output(用于输出的),@age
int
output(用于输出),@phone_num
char(11)
(输入)
as
select
@name=name(列名),@age=age(列名)
from
table_name(表名)
where
phone_num(列名)=@phone_num
(2)触发器
create
tigger
for_update
on
table_name
after
update
as
if(update(phone_num))
update
table_name2
set
phone_num=i.phone_num
from
deleted
d,inserted
i
where
table_name.phone_num=d.phone_num
end
其中:deleted与inserted是sql中默认的临时表。用来储存原来的值和插入的值。本触发器的作用是
当更新table_name
中的phone_num时table_name1中的phone_num也一起更新!注意触发器只能用于update.insert.delete.select中不能用于创建表............

⑷ 数据库存储过程、函数、触发器的区别是什么

三者差别:

1、存储过程实现的功能要复杂一点,而函数实现的功能针对性比较强。;

2、存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用;

3、触发器是特殊的存储过程,存储过程需要程序调用,而触发器会自动执行。

分别含义:

1、存储过程的特点

①存储过程只在创建时进行编译,以后执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。

② 当对数据库进行复杂操作时(如对多个表进行Update、Insert、Query、Delete时),可将此复杂操作用存储过程封装起来。

③可以在过程中调用另一个存储过程。可以在存储过程中调用函数。这可以简化一系列复杂语句。

④ 安全性高,可设定只有某用户才具有对指定存储过程的使用权。

⑤参数有三种(IN、OUT、IN OUT),可返回多个参数值。

⑥在ORACLE中,若干个有联系的过程可以组合在一起构成程序包。

⑦存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。

2、函数的特点

①函数只有一种参数(IN),只有一条RETURN语句,只能返回单一的值。

②可在SQL语句(DML或SELECT)中调用函数。由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。

3、触发器的特点

触发器是特殊的存储过程,存储过程需要程序调用,而触发器会自动执行。

⑸ oracle 在存储过程中可以调用触发器么

oracle 在存储过程中可以调用触发器
触发器之所以叫触发器就是因为他不能被调用,当然,如果存储过程中有ddl语句达到了触发某一个触发器的条件,触发器就会被触发

热点内容
映像压缩 发布:2024-05-21 05:46:53 浏览:726
小葫芦直播助手服务器地址 发布:2024-05-21 05:46:51 浏览:969
遨游缓存视频 发布:2024-05-21 05:46:47 浏览:784
家用电脑能装服务器 发布:2024-05-21 05:45:56 浏览:437
闭鱼脚本 发布:2024-05-21 05:45:54 浏览:66
动态范围压缩开还是关 发布:2024-05-21 05:44:23 浏览:549
本田crv两驱买哪个配置 发布:2024-05-21 05:41:22 浏览:75
手机淘宝缓存视频 发布:2024-05-21 05:21:09 浏览:348
4款配置怎么选 发布:2024-05-21 05:20:03 浏览:586
python服务重启 发布:2024-05-21 05:07:51 浏览:668