oracle存储过程和触发器
2016-05-28 10:42
429 查看
--过程
创建过程,create procedure语句可以用于创建过程,简化语法如下:
create [or replace] procedure procedure_name
[(parameter_name [in|out|in out] type [,...])]
{is | as}
begin
procedure_body
end parameter_name;
其中,or replace说明如果该过程已经存在,则用新的过程代替它。该选项可以用来修改一个现有过程;in|out|in out定义了参数的模式。in为默认的模式。type指定参数的类型。 procedure_body包含执行过程任务的sql和pl/sql语句。
--触发器
触发器(trigger)是当特定的SQL DML语句,如insert,update或delete语句在特定的数据库表上运行时,由数据库自动运行(或者用技术来讲是自动激活)的过程。触发器对于实现表中某个列值的高级变更审计等功能非常有用。简化语法如下:
create [or replace] trigger trigger_name
{before|after|instead of} trigger_event
on table_name
[for each row [when trigger_condition]]
begin
trigger_body
end trigger_name
其中,for each row指定触发器是一个行级触发器,即当触发器激活时,trigger_body中包含的代码会为每一行运行一次,如果for each row没有,则触发器是一个语句级触发器,即不管所作用的行有多少,当触发器激活时,trigger_body中包含的语句只运行一次。befor指定触发器在触发事件运行之前激活,after是定触发器在触发事件运行之后激活,instead of指定用触发器激活代替触发事件的运行。
创建过程,create procedure语句可以用于创建过程,简化语法如下:
create [or replace] procedure procedure_name
[(parameter_name [in|out|in out] type [,...])]
{is | as}
begin
procedure_body
end parameter_name;
其中,or replace说明如果该过程已经存在,则用新的过程代替它。该选项可以用来修改一个现有过程;in|out|in out定义了参数的模式。in为默认的模式。type指定参数的类型。 procedure_body包含执行过程任务的sql和pl/sql语句。
--创建一个过程,给某个教师加工资 create or replace procedure update_t_sal(t_tno in t.tno%type, t_num in number) as t_count_id integer; begin select count(*) into t_count_id from t where t_tno=tno; if t_count_id = 1 then update t set sal=sal+t_num where t_tno=tno; commit; end if; exception when others then rollback; end update_t_sal; --过程的调用 call update_t_sal('t1', 100); --删除过程 drop procedure update_t_sal;
--触发器
触发器(trigger)是当特定的SQL DML语句,如insert,update或delete语句在特定的数据库表上运行时,由数据库自动运行(或者用技术来讲是自动激活)的过程。触发器对于实现表中某个列值的高级变更审计等功能非常有用。简化语法如下:
create [or replace] trigger trigger_name
{before|after|instead of} trigger_event
on table_name
[for each row [when trigger_condition]]
begin
trigger_body
end trigger_name
其中,for each row指定触发器是一个行级触发器,即当触发器激活时,trigger_body中包含的代码会为每一行运行一次,如果for each row没有,则触发器是一个语句级触发器,即不管所作用的行有多少,当触发器激活时,trigger_body中包含的语句只运行一次。befor指定触发器在触发事件运行之前激活,after是定触发器在触发事件运行之后激活,instead of指定用触发器激活代替触发事件的运行。
相关文章推荐
- oracle游标的使用
- 彻底搞懂Oracle字符集
- VS2012通过ASO.NET实体模型添加oracle数据库连接
- MSSQL如何访问ORACLE里的表
- Data Guard Physical Standby Setup in Oracle Database 11g Release 2
- Installation of Oracle 11g Release 2 (11.2.0.1.0) on RedHat EL 5, (Oracle) Enteprise Linux 5 and Cen
- oracle arvhivelog、noarchivelog与mount的关系
- zabbix3.0.2 监控oracle高可用dataguard的standby库状态详细过程
- 如何向oracle数据库里导入现有的dmp文件
- [INS-40406] 未检测到现有的 Oracle Grid Infrastructure 软件
- ORACLE数据库DBMS_JOB的创建与使用
- oracle-构造结果集
- Oracle操作数据库oracleHelper
- mybatis执行批量更新batch update 的方法(oracle,mysql)
- oracle的io优化--db_writer_processes & dbwr_io_slaves对比
- 新浪 SDK编码规范
- mybatis反向生成表 oracle数据库篇
- [转]DBCP连接池的最简单应用(用于ORACLE数据库)
- sqlserver、mysql、oracle各自的默认端口号
- oracle 11g里边有scott用户,且脚本scott.sql无错 SQL> conn scott 输入口令: ERROR: ORA-01017: invalid username/passwor