PL/pgSQL学习笔记之五

简介:

http://www.postgresql.org/docs/9.1/static/plpgsql-declarations.html

39.3. 声明

块中使用的所有的变量必须在块的声明节中进行声明。(唯一的例外是,子一个For循环中,在一个整数范围内轮询的循环变量被自动认为是整型变量,而只For循环中,轮询一个游标的变量被自动声明为记录变量。)

PL/pgSQL 变量可以是任何SQL数据类型,如integer,varchar,还有char等。

下面是变量声明的一些个例子:

user_id integer;
quantity numeric(5);
url varchar;
myrow tablename%ROWTYPE;
myfield tablename.columnname%TYPE;
arow RECORD;

变量声明的语法是:

name [ CONSTANT ] type [ COLLATE collation_name ] [ NOT NULL ] [ { DEFAULT | := } expression ];

如果给出DEFAULT 子句,则在进入块的时候,该变量会被赋予此初始值。如果没有给定DEFAULT子句,在变量会被赋予SQL null值。如果指定了CONSTANT选项,在会防止变量在初始化后被更改,因此在块的范围内会保持为常量。COLLATE选项指定了一套为变量所用的编码集。如果指定了NOT NULL,则赋予该变量一个空值会导致运行时错误。所有声明为NOT NULL的变量必须有一个非空的缺省值。

一个变量的缺省值会在每次进入块的时候被评估和设定(不是仅仅在函数被调用时才执行)。因此,举个例子来说,给一个timestamp类型的变量赋缺省值now(),会导致在当前函数调用的时间被赋值给此变量,而不是此函数中预编译时候的值。

例子:

 

quantity integer DEFAULT 32;
url varchar := 'http://mysite.com';
user_id CONSTANT integer := 10;

 







本文转自健哥的数据花园博客园博客,原文链接:http://www.cnblogs.com/gaojian/p/3181210.html,如需转载请自行联系原作者


目录
相关文章
|
C语言 Perl
OushuDB-PL 过程语言-二、PL/pgSQL的结构
OushuDB-PL 过程语言-二、PL/pgSQL的结构
56 0
|
Oracle 关系型数据库 数据库
PgSQL · 最佳实践 · pg_rman源码浅析与使用
背景 对于商业数据库来说,备份的功能一般都非常的全面。 比如Oracle,它的备份工具rman是非常强大的,很多年前就已经支持全量、增量、归档的备份模式,支持压缩等。 还支持元数据存储到数据库中,管理也非常的方便,例如保留多少归档,备份集的管理也很方便,例如要恢复到什么时间点,将此前的备份清除等等。 对于开源数据库来说,支持向商业版本这么丰富功能的比较少,PostgreSQ
3211 0
|
关系型数据库 PostgreSQL Windows