1 / 11

7.1.1 存储过程的分类

(1) 系统存储过程 系统存储过程是由系统提供的存储过程,可以作为命令执行各种操作。系统存储过程定义在系统数据库 master 中,其前缀是 sp_ ,它们为检索系统表的信息提供了方便快捷的方法. 7.1.1 存储过程的分类. (2) 本地存储过程 本地存储过程是指在用户数据库中创建的存储过程,这种存储过程完成用户指定的数据库操作,其名称不能以 sp_ 为前缀。. (3) 临时存储过程

rusti
Download Presentation

7.1.1 存储过程的分类

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. (1) 系统存储过程 系统存储过程是由系统提供的存储过程,可以作为命令执行各种操作。系统存储过程定义在系统数据库master中,其前缀是sp_,它们为检索系统表的信息提供了方便快捷的方法 7.1.1 存储过程的分类 (2) 本地存储过程 本地存储过程是指在用户数据库中创建的存储过程,这种存储过程完成用户指定的数据库操作,其名称不能以sp_为前缀。 (3) 临时存储过程 临时存储过程属于本地存储过程。如果本地存储过程的名称前面有一个“#”,该存储过程就称为局部临时存储过程,这种存储过程只能在一个用户会话中使用。 (4) 远程存储过程 远程存储过程指从远程服务器上调用的存储过程。 (5) 扩展存储过程 在SQL Server环境之外执行的动态链接库称为扩展存储过程,其前缀是sp_。使用时需要先加载到SQL Server系统中,并且按照使用存储过程的方法执行。

  2. 7.1.2 用户存储过程的创建与执行 1. 通过SQL命令创建和执行存储过程 步骤如下: (1) 定义如下存储过程 USE XSBOOK GO CREATE PROCEDURE readers_info AS SELECT DISTINCT XS.借书证号,姓名,BOOK.ISBN,书名,索书号 FROM XS,JY,BOOK WHERE XS.借书证号=JY.借书证号 AND BOOK.ISBN=JY.ISBN GO (2) 调用存储过程 EXEC readers_info GO

  3. 7.1.2 用户存储过程的创建与执行 2. 利用企业管理器创建用户存储过程 (1) 在SQL Server企业管理器的目录树中,选中XSBOOK数据库文件夹下的存储过程图标右击,出现一快捷菜单,选择菜单项“新建存储过程”,进入新建存储过程窗口,如图所示; (2) 在新建存储过程窗口输入定义的存储过程,然后选择“确定”按钮。

  4. 7.1.3 用户存储过程的编辑修改 使用ALTER PROCEDURE命令可修改已存在的存储过程。 语法格式: ALTER PROC [ EDURE ] procedure_name [ ; number ] [ { @parameter data_type } [ VARYING ] [ 0= default ] [ OUTPUT ] ] [ ,...n ] [ WITH  { RECOMPILE | ENCRYPTION  | RECOMPILE , ENCRYPTION }] [ FOR REPLICATION ] AS   sql_statements

  5. 7.1.4 用户存储过程的删除 如果确认一个数据库的某个存储过程与其它对象没有任何依赖关系,则可用DROP PROCEDURE语句永久地删除该存储过程。 语法格式: DROP PROCEDURE { procedure } [ ,...n ] 功能:从当前数据库中删除一个或多个存储过程或存储过程组。 参数含义: procedure指要删除的存储过程或存储过程组的名称;n:表示可以指定多个存储过程同时删除。

  6. 7.2.1 利用SQL命令创建触发器 1. 语法格式 CREATE TRIGGER trigger_name ON { table | view } /*指定触发器名及操作对象*/ [ WITH ENCRYPTION ] /*说明是否采用加密方式*/ { FOR | AFTER | INSTEAD OF } { [DELETE] [,] [INSERT] [,] [UPDATE] } /*定义触发器的类型*/ [ NOT FOR REPLICATION ] /*说明该触发器不用于复制*/ AS   [ { IF UPDATE ( column ) [ { AND | OR } UPDATE ( column )]  [ ...n ]  | IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )  { comparison_operator } column_bitmask [ ...n ]  } ] /*两个IF子句用于说明触发器执行的条件*/  sql_statements /* T- SQL语句序列*/

  7. 7.2.1 利用SQL命令创建触发器 2. 触发器中使用的特殊表 inserted 逻辑表:当向表中插入数据时,INSERT触发器触发执行,新的记录插入到触发器表和inserted表中。 deleted逻辑表:用于保存已从表中删除的记录,当触发一个DELETE触发器时,被删除的记录存放到deleted逻辑表中。 3. 使用触发器的限制 使用触发器有8种限制 4. 举例 对于XSBOOK数据库,如果在XS表中添加或更改数据,则向客户端显示一条信息。 /*使用带有提示消息的触发器*/ USE XSBOOK IF EXISTS (SELECT name FROM sysobjects WHERE name = 'reminder' AND type = 'TR') DROP TRIGGER reminder GO CREATE TRIGGER reminder ON XS FOR INSERT, UPDATE AS RAISERROR (4008, 16, 10) GO

  8. 7.2.1 利用SQL命令创建触发器 5. INSTEAD OF触发器的设计 如果视图的数据来自于多个基表,则必须使用INSTEAD OF 触发器支持引用表中数据的插入、更新和删除操作。 若在一个多表视图上定义了INSTEAD OF INSERT触发器,视图各列的值可能允许为空也可能不允许为空,若视图某列的值不允许为空,则INSERT语句必须为该列提供相应的值。 如果视图的列为以下几种情况之一: (1)基表中的计算列。 (2)IDENTITY INSERT为OFF的基表中的标识列。 (3)具有timestamp数据类型的基表列。

  9. 7.2.2 利用企业管理器创建触发器 要对XSBOOK数据库的JY表定义DELETE触发器,利用企业管理器实现步骤如下: (1) 进入企业管理器的目录树,展开XSBOOK数据库的文件夹,选中JY表的图标右击,出现一快捷菜单,选择“所有任务”菜单项下的“管理触发器”子菜单项,进入触发器属性面。 (2) 在“名称”中,单击“新建”,删除文本框中系统自动产生的内容,然后输入触发器的代码:

  10. 7.2.3 触发器的修改 1. 利用SQL命令修改触发器 语法格式: ALTER TRIGGER trigger_name ON ( table | view ) [ WITH ENCRYPTION ] { ( FOR | AFTER | INSTEAD OF ) { [ DELETE ] [ , ] [ INSERT ] [ , ] [ UPDATE ] } [ NOT FOR REPLICATION ]  AS      sql_statements    }    | { ( FOR | AFTER | INSTEAD OF ) { [ INSERT ] [ , ] [ UPDATE ] }      [ NOT FOR REPLICATION ]      AS      { IF UPDATE ( column )  [ { AND | OR } UPDATE ( column ) ]   [ ...n ]        | IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask ) { comparison_operator } column_bitmask [ ...n ]      }        sql_statements  }

  11. 7.2.4 触发器的删除 1. 利用SQL命令删除触发器 语法格式: DROP TRIGGER { trigger } [ ,...n ] 功能:从当前数据库中删除一个或多个触发器。 参数含义: trigger:指要删除的触发器名称,包含触发器所有者名。 n:表示可以指定多个触发器。 USE XSCJ IF EXISTS (SELECT name FROM sysobjects WHERE name = 'reminder' AND type = 'TR') DROP TRIGGER reminder GO 2. 通过企业管理器删除触发器

More Related