程序SQL(PSQL)语句
审查状态
从这一点开始,到这一章的末尾的所有部分都正在等待技术和编辑审查。
程序SQL(PSQL)是SQL的程序扩展。此语言子集用于存储的书写过程、触发器和PSQL块。
PSQL 提供的传统的结构化编程语言,所有的基本构造和还包括DML语句(SELECT, INSERT, UPDATE, DELETE等),在某些情况下的语法稍作了修改。
程序扩展可能会包含声明的本地变量和游标,赋值,条件语句,循环,引发自定义异常语句,错误处理和发送消息(事件)客户端应用程序。触发器有权访问特定的上下文变量,两个数组分别存储,NEW值为插入和更新活动中的所有列的值,OLD值为更新活动和删除工作中的所有列值。在PSQL中修改修改元数据(DDL)的语句是无效的。
如果DML语句(SELECT, INSERT, UPDATE, DELETE等)在模块(程储过程,触发器或块)的正文中使用参数,只有命名的参数能被使用且在使用前它们必须"存在",语句才能使用它们.他们可被声明为有效,要么作为该模块的输入或输出参数在模块头中,或在模块头底部的DECLARE [VARIABLE]语句作为本地变量,
当 DML 语句参数包含在 PSQL 代码中时,在大多数情况下参数名称必须以一个冒号 (":")为前缀。冒号是可选的语句语法在特定的PSQL中,如赋值和条件语句,参数的冒号前缀是不需要的,当从一个PSQL模块内部调用另一个存储过程时或在DSQL中。
存储过程在他们被调用的事务上下文中执行。触发器被作为一个固有的 DML 语句的操作部分执行 ︰ 因此,他们的执行是在作为语句本身的上下文同一事务内。数据库事件触发器被启动独立事务。
在PSQL中使用语句开始和结束事务是无效的,但可以运行一个语句或一个语句块在一个独立的事务中。