Firebird数据库
Firebird数据库语言参考-创建存储过程
2016-05-27 09:10:58

 

存储过程是一个软件模块,它可以被一个客户端调用,另一个程序,一个可执行的块或一个触发器调用。存储过程、可执行模块和触发器都是使用程序SQL(PSQL)所编写。大多数的SQL语句也可用于PSQL,有时带有限制或扩展。其中值得注意的异常是DDL和事务控制语句。

存储过程可以有多个输入和输出参数。

 

CREATE PROCEDURE

 

作用: 建立一个新的存储过程

 

用于: DSQL, ESQL

 

语法:

 








 

 

 

 


 




 












 



 

表 5.24. CREATE PROCEDURE语句的参数

 

 

CREATE PROCEDURE语句建立一个新的存储过程.过程的名称必须是唯一的,在数据库中所有存储过程,表和视图的名称之中。

 

CREATE PROCEDURE是一个复合语句,由头和主体组成。头指定存储过程的名称和声明输入参数和输出参数,如果有输出参数的话,被的程序返回。

 

程序主体由任何声明局部变量和命名游标组成,它们将被程序使用,紧随其后的是一个或多个语句,或语句块,所有封闭的外块从关键字BEGIN开始,结束于关键字END。声明和嵌入语句以分号(;)终止。

 

 

一些 SQL 语句编辑器 — — Firebird专门配备的isql 实用工具和一些第三方的编辑器 — — 使用其内部的约定,要求所有语句都以分号结束。

 

在这些环境中编码时, 这将同PSQL语法产生一个冲突。如果你不知道这个问题及其解决方案,请详细信息学习PSQL 章中题为 在isql中切换结束符号一节

 

 

每个参数都为它指定数据类型。对于任何参数,也可以指定 NOT NULL 约束,为了防止 NULL 传递到或分配给它。

可以为字符串类型的参数,使用 COLLATE 子句指定一个排序规则序列。

 

 

输入的参数列表被显示在过程名称后的圆括号中。它们被作为值传递到过程,所以任何改变它们里面的程序没有任何影响在调用程序中的参数。

 

输入的参数可以有默认值。那些为它们指定的值必须是位于参数列表的末尾。

 

 

可选的 RETURNS 子句用于程储过程指定输出参数,参数列表位于一对圆括号中。

 

 

一个域的名称可以用于指定为一个参数的类型。参数将继承所有域的属性。如果为参数指定一个默认值,它将覆盖域定义中指定的默认值。

 

如果TYPE OF子句添加域的名称之前,只使用域的数据类型:任何的域的其他属性——NOT NULL约束,CHECK约束,默认值——既不检查也不使用。然而,如果域是一个文本类型,其字符集和排序序列总是使用。

 

 

输入和输出参数也可以声明使用现有表和视图的列数据类型。TYPE OF COLUMN子句用于指定relationname.columnname作为其参数。

 

当TYPE OF COLUMN被使用时,参数只继承了数据类型,及对于字符串类型的字符集和和排序顺序。列的约束和默认值被忽略。

 

 

 

 

 

可选的声明部分,位于存储过程定义头部的最后部分,定义程序的局部变量和它的命名的游标。局部变量声明遵循同参数作为数据类型规范的相同规则。详细参阅PSQL章节DECLARE VARIABLE 和 DECLARE CURSOR.

 

头部后面紧接着是过程的主体,包括一个或多个PSQL语句封闭外部关键字BEGIN和END之间。多个BEGIN ... END结束块语句可以嵌入过程体内部。

 

任何连接到数据库的用户可以创建新的存储的过程。创建存储的过程的用户成为其所有者。

.