第章存储过程、触发器和数据完整性 61存储过程 62触发器 63数据完整性
第6章 存储过程、触发器和数据完整性 6.1 存储过程 6.2 触发器 6.3 数据完整性
61存储过程 客户/服务器数据库与传统的数据库结构的 一个很重要的区别是,在传统的数据库中只存 放数据,所有的应用程序都在用户端,都与用 户实际运行的应用程序捆绑在一起;而在客户/ 服务器结构的数据库中,在数据库中还可以存 放程序,即存储过程
6.1 存储过程 客户/服务器数据库与传统的数据库结构的 一个很重要的区别是,在传统的数据库中只存 放数据,所有的应用程序都在用户端,都与用 户实际运行的应用程序捆绑在一起;而在客户/ 服务器结构的数据库中,在数据库中还可以存 放程序,即存储过程
基本概念 存储过程是事先编好的、存储在数据库 中的程序,这些程序用来完成对数据库的指 定操作
基本概念 存储过程是事先编好的、存储在数据库 中的程序,这些程序用来完成对数据库的指 定操作
系统存储过程 SQL Server本身提供了一些存储过程,用于管 理 SQL Server和显示有关数据库和用户的信息,我 们称之为系统存储过程 用户存储过程 用户也可以编写自己的存储过程,并把它存放 在数据库中。这样安排的主要目的就是要充分发挥 数据库服务器的功能,尽量减少网络上的堵塞
系统存储过程 SQL Server本身提供了一些存储过程,用于管 理SQL Server和显示有关数据库和用户的信息,我 们称之为系统存储过程。 用户存储过程 用户也可以编写自己的存储过程,并把它存放 在数据库中。这样安排的主要目的就是要充分发挥 数据库服务器的功能,尽量减少网络上的堵塞
客户端应用 (不使用存储过程) 不使用存 Start transaction InSeRT data 储过程时, uPdatE data delete data DBMS 所有的数据 End transaction Server 处理都在客 户端完成; 客户端应用 (使用存储过程) 而使用存储 DBMS Start transaction 过程时,可 Call Stored procedure End transaction 以使数据处 Procedure InseRT data 理在服务器 uPdatE data delete data 端完成
客户端应用 (不使用存储过程 ) 客户端应用 (使用存储过程 ) . Start transaction . INSERT data UPDATE data DELETE data End transaction .. Start transaction . Call Stored procedure End transaction . DBMS Server DBMS Server Procedure : INSERT data UPDATE data DELETE data (a) (b) 不使用存 储过程时, 所有的数据 处理都在客 户端完成; 而使用存储 过程时,可 以使数据处 理在服务器 端完成
创建存储过程 CREATE PROCLedure] procedure name[; number] [parameter data type[=default l,.] As sql statement procedure name:给出存储过程名; ◆ number:对同名的存储过程指定一个序号 @parameter:给出参数名; ◆ data type:指出参数的数据类型; ◆= default:给出参数的默认值; ◆ sql statement:存储过程所要执行的SQL语句,它可以是一组 S①L语句,可以包含流程控制语句等
创建存储过程 CREATE PROC[edure] procedure_name [ ; number ] [ @parameter data_type [ = default ], … ] AS sql_statement s procedure_name:给出存储过程名; s number:对同名的存储过程指定一个序号; s @parameter:给出参数名; s data_type:指出参数的数据类型; s = default:给出参数的默认值; s sql_statement:存储过程所要执行的SQL语句,它可以是一组 SQL语句,可以包含流程控制语句等
例:创建一个最简单的存储过程: CREATE PROCedure sp getemp As SELECT*FROM职工
例:创建一个最简单的存储过程: CREATE PROCedure sp_getemp;1 AS SELECT * FROM 职工
例:带参数的存储过程: CREATE PROCedure sp getemp; 2 @salary int) As SELECT*FROM职工 WHERE工资> salary
例:带参数的存储过程: CREATE PROCedure sp_getemp;2 (@salary int) AS SELECT * FROM 职工 WHERE 工资 > @salary
存储过程一般用来完成数据查询和数据处理 操作,所以在存储过程中不可以使用创建数据库 对象的语句,即在存储过程中一般不能含有以下 CREATE TABLE CREATE VIEW CREATE DEFAULT CREATE RULE CREATE TRIGGER CREATE PROCEDURE
存储过程一般用来完成数据查询和数据处理 操作,所以在存储过程中不可以使用创建数据库 对象的语句,即在存储过程中一般不能含有以下 语句: ·CREATE TABLE ·CREATE VIEW ·CREATE DEFAULT ·CREATE RULE ·CREATE TRIGGER ·CREATE PROCEDURE
执行存储过程 EXECute] [@ [D]{值>@}…]
执行存储过程 [EXECute] [@=] [[@=]{|@}…]