DO(做)
描述
DO 执行了一个匿名代码块,或换而言之为一个程序化语言的暂时的匿名函数
该代码块被认为似乎是一个没有参数的函数体,返回空值。它被解析被执行了一次。
可选参数 LANGUAGE 子句可以出现在代码块的前或者后。
匿名块是程序化语言结构,该结构提供在运行时创建和执行程序代码的能力,而不用将代码作为数据库对象持久的存储在系统目录中。匿名代码块的概念和UNIX shell脚本相似,该能允许将多个手动输入命令分组并作为一步骤执行。顾名思义,匿名块没有名字,因此不能被其他对象引用。虽然动态创建,匿名块可以轻松的作为脚本存储在操作系统文件中以便重复执行。
匿名块是标准程序语言块。他们携带语法并且遵循适用于该程序语言的规则,包括变量的声明和作用于,执行,异常处理和语言使用。
code
需要执行的程序化语言代码。这必须指定为字符串文本。正如使用 CREATE FUNCTION 命令。建议使用美元引用文字。可选关键字无效。支持这些程序语言:PL/pgSQL(plpgsql),PL/Python (plpythonu),and PL/Perl (plperl 和 plperlu)。
lang_name
代码所用程序语言的名字。该语言默认是 plpgsql。该语言必须在Greenplum数据库中安装并且在用户数据库中注册。
注意
PL/pgSQL 语言安装在Greenplum数据库系统中并且注册在用户创建的数据库中。PL/Python 语言是默认安装的,但是没有注册。其他语言没有安装也没有注册。系统目录 pg_language 包含了在数据库中注册语言的信息。
该 PL/pgSQL 例子对webuser用户赋予在 public 模式中所有视图的所有权限:
该 PL/pgSQL 例子决定是否Greenplum数据库用户是超级用户。在例子中,匿名块检索从临时表的输入值。
注意: 例子 PL/pgSQL 使用 SELECT 和 INTO 子句。它和 SQL 命令的 SELECT INTO 语句不同。
兼容性
SQL标准中没有 DO 语句。
CREATE LANGUAGE