PostgreSQL-PL/pgSQL控制结构】的更多相关文章

ref: https://www.postgresql.org/docs/9.6/static/plpgsql-structure.html 一. 函数结构 CREATE FUNCTION somefunc(integer, text) RETURNS integer AS 'function body text' LANGUAGE plpgsql; PL/pgSQL是块结构(block-structured)语言,上面示例里的function body必须是一个块(block),块结构如下 […
介绍 PL/pgSQL 是PostgreSQL 数据库系统的一个可加载的过程语言. PL/pgSQL 的设计目标是创建一种可加载的过程语言,可以 用于创建函数和触发器过程, 为SQL 语言增加控制结构, 执行复杂的计算 继承所有用户定义类型.函数.操作符, 定义为被服务器信任的语言.PL/pgSQL创建的函数可以在那些使用内置函数一样的情形下使用. 比如,可以创建复杂的条件计算函数,并随后将之用于定义操作符或者用于函数索引中. 使用PL/pgSQL的优点 SQL是PostgreSQL和大多数其它…
http://blog.chinaunix.net/uid-7591044-id-1742967.html 今天学会了用 PL/pgSQL 写 postgreSQL 的存储过程,网上资料实在少得可怜,唯一能搜到的一些还是抄来抄去的:还是翻postgresql的文档吧,把今天解决的问题说一下吧,希望对其他人有帮助.问题是这样的,有一张message表:CREATE TABLE message(id int8 NOT NULL,receiveuserid int8,senduserid int8,r…
开始 资料来源:http://www.postgresql.org/docs/9.1/static/plpgsql-overview.html 39.1 概要: PL/pgSQL是一种可载入的过程语言,它的设计目标: 可以用来创建函数和触发器过程, 给SQL语言提供控制结构, 能够完成复杂计算, 能继承所有用户定义的类型.函数和操作符, 定义为被服务器所信任, 易于使用. 使用PL/pgSQL创建的话函数可以像内置的函数一样被使用.例如,可以创建一个复杂的条件计算函数,而后在索引表达式中使用它,…
http://www.postgresql.org/docs/9.1/static/plpgsql-declarations.html 另外一种声明 PL/pgSQL 函数的方法是使用 returns table,例如: CREATE FUNCTION extended_sales(p_itemno int) RETURNS TABLE(quantity int, total numeric) AS $$ BEGIN RETURN QUERY SELECT quantity, quantity…
http://www.postgresql.org/docs/9.1/static/plpgsql-declarations.html 如果一个PL/pgSQL函数声明了输出参数,输出参数被赋予$n名称和可选的别名,和正常输入参数的作法一样.输出参数是一个从NULL开始的变量:它将被在函数的执行过程中被赋值.此参数的最后的值就是函数的返回值.例如,the sales-tax 例子可以这样实现: 例子: CREATE FUNCTION sales_tax(subtotal real, OUT ta…
http://www.postgresql.org/docs/9.1/static/plpgsql-declarations.html 39.3. 声明 块中使用的所有的变量必须在块的声明节中进行声明.(唯一的例外是,子一个For循环中,在一个整数范围内轮询的循环变量被自动认为是整型变量,而只For循环中,轮询一个游标的变量被自动声明为记录变量.) PL/pgSQL 变量可以是任何SQL数据类型,如integer,varchar,还有char等. 下面是变量声明的一些个例子: user_id i…
http://www.postgresql.org/docs/9.1/static/plpgsql-structure.html 39.2. PL/pgSQL 的结构 PL/pgSQL是一种块式结构的语言.完整的函数定义必须是一个块.一个块的定义形式如下: [ <<label>> ] [ DECLARE declarations ] BEGIN statements END [ label ]; 在块中,每一个声明或语句都以分号结束.一个块出现在另外一个块中的时候,必须接 END:…
http://www.postgresql.org/docs/9.1/static/plpgsql-overview.html 39.1.2. Supported Argument and Result Data Types 用PL/pgSQL写的函数可以接受标量类型或者服务器支持的数组类型作为参数,它们可以返回前述的数据类型的结果.它们也能接受或返回通过名称指定的复杂类型(rwo type).也可以声明一个PL/pgSQL函数返回 record类型,此时返回的结果是一个row type,它的列…
39.1.1 使用 PL/pgSQL的好处 SQL是 PostgreSQL和其他大多数关系型数据库作为查询语言而使用的语言.它可移植,并容易学习.但是SQL语句必须被数据库服务器逐条地执行. 这意味着你的客户应用必须向数据库发送每一条查询,等待它被处理,接收并处理结果,进行一些计算,然后再依次类推送出更多的查询.所有这些导致进程间通信,如果你的客户程序和数据库服务器位于不同的机器上,网络负载也会大量增加. 使用 PL/pgSQL, 你可以把一个计算块和一系列的数据库服务器内部的查询组合到一起,这…