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,如需转载请自行联系原作者