授权(GRANT) 与收回权限(REVOKE) 触发器概述 • 触发器主要有以下三方面的特点: (1)当数据库程序员声明的事件发生时,触发器被激活。声明的事件可以是对某个特定关系的插入、删除或更 新。 (2)当触发器被事件激活时,不是立即执行,而是首先由触发器测试触发条件,如果事件不成立,响应该事件 的触发器什么都不做。 (3)如果触发器声明的条件满足,则与该触发器相连的动作由DBMS执行。动作可以阻止事件发生,可以撤销事 件。 • 创建触发器时需指定: (1)触发器名称 (2)在其上定义触发器的表 (3)触发事件:触发器将何时激发 (4)触发条件:满足什么条件时执行触发动作 (5)触发动作:指明触发器执行时应做的动作 • 触发器可以引用当前数据库以外的对象,但只能在当前数据库中创建触发器。 • 不能在临时表或系统表上创建触发器,但触发器可以引用临时表。 嵌入式SQL • SQL提供了将SQL语句嵌入到某种高级语言中的方式,通常采用预编译的方法。 1、区分主语言与SQL语句的方式: EXEC SQL (SQL语句) 2、向主语言传递SQL语句执行的状态信息的方式: SQLCA,即SQL通信区,是系统默认定义的全局变量。 3、主变量(共享变量): • 主语言通过主变量向SQL语句提供参数,主变量是由主语言的程序定义的,并用SQL的DECLARE语句 说明。 • 在SQL语句中,为了与SQL中的属性名区分,在引用共享变量时,前面需要加“ : ” 游标 • SQL语言是面向集合的,一条SQL语句可以产生或处理多条记录。而主语言是面向记录的,一组主变量一次只 能放一条记录,所以,引入游标,通过移动游标指针来决定获取哪一条记录。 1、定义游标: 语句格式: EXEC SQL DECLARE CURSOR FOR • 它只是一条说明性语句,定义游标后,其中的SELECT语句并不执行。 2、打开游标: 语句格式: EXEC SQL OPEN • 该语句执行游标定义中的SELECT语句,同时游标处于活动状态。游标是一个指针,此时指向查询结果的第一 行之前。 3、推进游标: 语句格式: EXEC SQL FETCH 游标名 INTO 变量表 • 该语句执行时,游标推进一行,并把游标指向的行(称为当前行)中的值取出,送到共享变量中。 4、关闭游标: EXEC SQL CLOSE 游标名 • 该语句关闭游标,使它不再和查询结果相联系。游标关闭后,后面还可以再打开。 存储过程 存储过程(Procedure):是一组为了完成特定功能的SQL语句集合,经编译后存储在数据 库中,用户通过指定存储过程的名称并给出参数来执行。 • 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回 单个或多个结果集以及返回值。 • 由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过 程运行要比单个的SQL语句块要快。