Greenplum函数开发_V1.0.pdf

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Greenplum函数开发_V1.0

学习 ·创造 ·超越 · 共享 Greenplum-PL/pgSQL开发 P9平台组 林舒杨 PL/pgSQL过程语言 ?标准PostgreSQL支持四种过程语言 ? PL/pgSQL ? PL/Tcl ? PL/Perl ? PL/Python ?用户可以定义其它语言 ?PL/pgSQL所支持的功能最为丰富 PL/pgSQL块结构 [ label ] [ DECLARE declarations ] BEGIN statements END; PL/pgSQL函数结构 CREATE OR REPLACE FUNCTION somefunc() RETURNS integer AS $$ DECLARE quantity integer := 30; BEGIN RAISE NOTICE Quantity here is %, quantity; quantity := 50; DECLARE quantity integer := 80; BEGIN RAISE NOTICE Quantity here is %, quantity; END; RAISE NOTICE Quantity here is %, quantity; RETURN quantity; END; $$ LANGUAGE plpgsql IMMUTABLE; quantity=30 quantity=80 quantity=50 函数属性 ?IMMUTABLE ? 该函数在同样的参数值下总返回相同的结果 ?STABLE ? 表示在一次表扫描里,对于相同的参数值,该 函数将返回相同的值 ?VOLATILE ? 该函数值可以在一次表扫描内改变,因此不会 做任何优化 注释 ?行注释 -- comment ?块注释 /* … */ 声明 ?变量声明语法: name [ CONSTANT ] type [ NOT NULL ] [ { DEFAULT | := } expression ]; ?CONSTANT ? 避免了该变量值被修改 ?NOT NULL ? 赋予该变量NULL值将导致一个运行时错误。 ? 所有声明为NOT NULL的变量还必须声明一个 非空的缺省值。 变量类型 ?拷贝类型 ? name variable%TYPE ?行类型 ? name table_name%ROWTYPE; ?记录类型 ? name RECORD; ? 无预定义结构 ? SELECT/FOR命令中获取实际的行结构 基本语句 ?赋值 ? identIFier := expression; ?SELECT INTO ? SELECT INTO target select_expressions FROM …; ? 判断是否查询到记录 SELECT INTO myrec * FROM emp WHERE empname = myname; IF NOT FOUND THEN RAISE EXCEPTION employee % not found, myname; END IF; 执行动态命令 ?EXECUTE command-string; ?不能使用SELECT INTO语法 ?可使用FOR-IN-EXECUTE语法获取查询结 果 ?获取结果状态 ? GET DIAGNOSTICS var_integer = ROW_COUNT; 控制结构 - 从函数返回 ?RETURN ? RETURN expression; ?RETURN NEXT ? 函数声明为返回:SETOF type ? 要返回的项在 RETURN NEXT 命令中声明 ? 最后使用不带参数的RETURN结束函数执行 ? 调用方法:SELECT * FROM some_func(); 控制结构 – RETURN NEXT 条件 ?IF…THEN…END IF; ?IF…THEN…ELSE…END IF; ?IF…THEN…ELSEIF…END IF; ?IF…THEN…ELSIF…THEN…ELSE…END IF; ?IF…THEN…ELSEIF…THEN…ELSE…END IF; 循环 - LOOP [label] LOOP statements END LOOP; ?LOOP定义一个无条件的无限循环 ?由EXIT或者RETURN语句终止 循环 - WHILE [label] WHILE expression LOOP statements END LOOP; WHILE amount_owed 0 AND gift_certificate_balance 0 LOOP -- DO SOMETHING END LOOP; WHILE NOT BOOLEAN_expression LOOP --

文档评论(0)

l215322 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档