1.存储过程和函数

存储过程重在处理数据,函数可以返回值。

(1)存储过程是procedure用户定义的一系列sql语句的集合,涉及特定表或其他对象的任务,用户可以调用存储过程。

(2)函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。

(3)可以理解函数是存储过程的一种,都是预编译的(块语句每次运行都会编译 存储过程块 一次编译多次运行 效率更高)

plsql块语句:

Begin

End

存储过程块

Create procedure prg_add()

As

Begin

End;

(4)函数可以没有参数,但是一定要有一个返回值,存储过程可以没有参数,不需要返回值。

(5)函数return返回值没有返回参数模式,存储过程通过out参数返回值,如果需要返回多个参数则建议使用存储过程(函数oracle 在函数可以使用in和out mysql不能使用out)

(6)在sql数据操纵(DML)语句中只能调用函数而不能调用存储过程

2.存储过程的概念,优点(或特点),写一个简单的存储过程

存储过程:是一组为了完成特定功能的SQL语句集,利用SQL Server所提供的T-SQL语言所编写的程序,经编译后存储在数据库中。

优点:

(1)执行速度快,存储过程只在创建时进行编译,以后每次执行不需要再重新编译,一般sql语句每执行一次就编译一次

(2)存储过程可重复使用

(3)安全性高(可设定只有某些用户才具有对指定存储过程的使用权)

(4)当对数据库进行复杂操作时,可完成复杂的判断和比较复杂的运算,可用存储过程封装起来

(5)易于维护和集中控制,当企业规则变化时在服务器中改变存储过程即可。无需修改 应用程序。

简单的存储过程:

create proc select_query @year int

as

select * from tmp where year=@year

3.触发器

(1)触发器:触发器可以看成是一个特殊的存储过程,存储过程是要显示调用去完成,而触发器可以自动完成。比如:当数据库中的表发生增删改操作时,对应的触发器就可以执行对应的PL/SQL语句块

(2)作用:维护表的完整性,记录表的修改来审计表的相关信息

分为:

DML触发器:当数据库服务器中发生数据操作语言事件时执行的存储过程,分为:After触发器和instead of触发器

DDL触发器:特殊的触发器,在响应数据定义语言(DDL)语句时触发,一般用于数据库中执行管理任务。DDL触发器是响应create、after、或drop开头的语句而激活

触发器用处还是很多的,比如校内网、开心网、Facebook,你发一个日志,自动通知好友,其实就是在增加日志时做一个后触发,再向通知表中写入条目。因为触发器效率高

---------------------