【数据库复习】第五章 数据库编程1

存储过程和触发器

PL/SQL :

SQL的扩展

增加了过程化语句功能

基本结构是块

块之间可以互相嵌套

每个块完成一个逻辑操作

1.定义部分

     DECLARE         

       ------变量、常量、游标、异常等   

定义的变量、常量等只能在该基本块中使用

当基本块执行结束时,定义就不再存在

2.执行部分

       BEGIN

   ------SQL语句、PL/SQL的流程控制语句

   EXCEPTION

       ------异常处理部分        

   END;

一、 条件控制语句

   IF-THEN,  IF-THEN-ELSE和嵌套的IF语句

1. IF condition THEN

       Sequence_of_statements;        

    END IF   

2. IF condition THEN

       Sequence_of_statements1;  

    ELSE

       Sequence_of_statements2;  

    END IF;

3. 在THEN和ELSE子句中还可以再包括IF语句,即IF语句可以嵌套

二、循环控制语句

    LOOP, WHILE-LOOP和FOR-LOOP

    1. 最简单的循环语句LOOP

   LOOP

      Sequence_of_statements;        

  END LOOP;

  多数数据库服务器的PL/SQL都提供EXIT、BREAK或LEAVE等循环结束语句,保证LOOP语句块能够结束。

2.  WHILE-LOOP

     WHILE condition LOOP

      Sequence_of_statements;

END LOOP;

每次执行循环体语句之前,首先对条件进行求值

如果条件为真,则执行循环体内的语句序列。

如果条件为假,则跳过循环并把控制传递给下一个语句

3.  FOR-LOOP

     FOR count IN [REVERSE]bound1 … bound2 LOOP

      Sequence_of_statements;

END LOOP;

二、 存储过程的用户接口

1. 创建存储过程:

CREATE Procedure 过程名([参数1,参数2,...]) AS

<PL/SQL块>;

过程名:数据库服务器合法的对象标识

参数列表:用名字来标识调用时给出的参数值,必须指定值的数据类型。参数也可以定义输入参数、输出参数或输入/输出参数。默认为输入参数。

过程体:是一个<PL/SQL块>。包括声明部分和可执行语句部分

 

 

2. 执行存储过程

  CALL/PERFORM  Procedure 过程名([参数1,参数2,...]);

使用CALL或者PERFORM等方式激活存储过程的执行。

在PL/SQL中,数据库服务器支持在过程体中调用其他存储过程

 

触发器(Trigger)是用户定义在关系表上的一类由事件驱动的特殊过程

由服务器自动激活

可以进行更为复杂的检查和操作,具有更精细和更强大的数据控制能力

CREATE TRIGGER语法格式

     CREATE TRIGGER <触发器名>  

         { BEFORE | AFTER } <触发事件> ON <表名>

           FOR EACH  { ROW | STATEMENT }

         [WHEN <触发条件>]

          <触发动作体>

定义触发器的语法说明:

1. 创建者:表的拥有者

2. 触发器名

3. 表名:触发器的目标表

4. 触发事件:INSERT、DELETE、UPDATE

5. 触发器类型

行级触发器(FOR EACH ROW)

语句级触发器(FOR EACH STATEMENT)

 

触发器的执行,是由触发事件激活的,并由数据库服务器自动执行

一个数据表上可能定义了多个触发器

同一个表上的多个触发器激活时遵循如下的执行顺序:

执行该表上的BEFORE触发器;

激活触发器的SQL语句;

执行该表上的AFTER触发器。

嵌入式SQL

SQL语言提供了两种不同的使用方式:

交互式

嵌入式

为什么要引入嵌入式SQL

SQL语言是非过程性语言

事务处理应用需要高级语言

这两种方式细节上有差别,在程序设计的环境下,SQL语句要做某些必要的扩充

主语言

嵌入式SQL是将SQL语句嵌入程序设计语言中,被嵌入的程序设计语言,如C、C++、Java,称为宿主语言,简称主语言。

为了区分SQL语句与主语言语句, 所有SQL语句必须加前缀EXEC SQL,以(;)结束:

EXEC SQL <SQL语句>;

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆呆水獭_(:_」∠)_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值