4-5过程化SQL

来源:互联网 发布:dns污染 知乎 编辑:程序博客网 时间:2024/04/30 22:27

4-5过程化SQL

tags:数据库

过程化SQL的块结构

基本的SQL是高度非过程化的语言,嵌入式SQL将SQL语句潜入程序设计语言,借助高级语言的空值功能实现过程花.过程化SQL是对SQL的扩展,使其增加了过程化语句功能.
过程化SQL程序的基本结构是块,所有的过程化SQL程序都是由块组成的.

过程化SQL的使用

变量定义

变量名 数据类型[[not null ] :=初始表达式]变量名 数据类型[[not null] 初值表达式]

常量定义

常量名  数据类型 constant:=常量表达式

赋值

变量名:=表达式

条件控制语句

if condition then    sequence_of_statements;end ifif condition then    sequence_of statement1;else    sequence_of statement2;end if;

循环控制语句

loop    sequence_of_statementend loopwhile condition loop    sequence_of_statementend loop

错误处理

如果过程化SQL在执行时出现异常,则应该让程序在产生异常的语句处停下来,根据异常的类型去执行异常处理语句.

存储过程和函数

过程化SQL块主要有两种类型,即命名块和匿名块.匿名块每次执行都要进行编译,它不能被存储到数据库中,也不能在其他过程化SQL块中调用.过程和函数是命名块,它们被编译后保存在数据库中,称为持久性存储模块.

存储过程

存储过程是由过程化SQL语句书写的过程,这个过程经过编译和优化后存储在数据库服务器中,因此称它为存储过程,使用时只要调用即可.

存储过程的优点

  1. 存储过程不像解释执行的SQL语句那样在提出操作请求时才进行语法分析和优化工作,因而运行效率较高,它提供了在服务器端解快速执行SQL语句的有效途径
  2. 存储过程降低了客户机和服务器之间的通信量.客户机上的应用程序只需要通过网络向服务器发出调用存储过程的名字和参数,就可以让关系数据库执行其中多条sql语句并进行数据处理
  3. 方便实施企业规则.

存储过程用户接口.

create or replace procedure 过程名([参数1,参数2...])as <过程化块>

执行存储过程

call/perform procedure 过程名([参数1...]);

修改存储过程

alter procedure 过程名 compile

删除存储过程

drop procedure 过程名()

函数

函数的定义和存储过程也类似,不同之处在于函数必须指定返回的类型

函数的定义

create or replace function函数名([参数 1..]) returns<类型>as <过程化SQL块>

函数的执行语句格式

call/select 函数名([参数1..])

修改函数

alter function 名1 rename to 名2
0 0