加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

(整理)PostgreSQL 存储过程

发布时间:2020-12-13 17:43:46 所属栏目:百科 来源:网络整理
导读:一、基本概念: SQL函数可以包含任意数量的查询,但是函数只返回 最后一个查询 (必须是SELECT)的结果。 在简单情况下,返回最后一条查询结果的第一 行。如果最后一个查询不返回任何行,那么该函数将返回NULL值。 // 返回多条记录 如果需要该函数返回最后一条

一、基本概念:

SQL函数可以包含任意数量的查询,但是函数只返回最后一个查询(必须是SELECT)的结果。在简单情况下,返回最后一条查询结果的第一行。如果最后一个查询不返回任何行,那么该函数将返回NULL值。

//返回多条记录

如果需要该函数返回最后一条SELECT语句的所有行,可以将函数的返回值定义为集合,即SETOF sometype
SQL函数的函数体应该是用分号分隔的SQL语句列表,其中最后一条语句之后的分号是可选的。除非函数声明为返回void,否则最后一条语句必须是SELECT

事实上,在SQL函数中,不仅可以包含SELECT查询语句,也可以包含INSERT、UPDATE和DELETE等其他标准的SQL语句,但是和事物相关的语句不能包含其中,如BEGIN、COMMIT、ROLLBACK和SAVEPOINT等。

例子:

CREATE FUNCTION命令的语法要求函数体写成一个字符串文本。通常来说,该文本字符串常量使用美元符($$)围住,如:
CREATE FUNCTION clean_emp() RETURNS void AS $$
DELETE FROM emp WHERE salary < 0;
$$ LANGUAGE SQL;

最后需要说明的是SQL函数中的参数,PostgreSQL定义$1表示第一个参数,$2为第二个参数并以此类推。如果参数是复合类型,则可以使用点表示法,即$1.name访问复合类型参数中的name字段。需要注意的是函数参数只能用作数据值,而不能用于标识符,如:
INSERT INTO mytable VALUES ($1);--合法
INSERT INTO $1 VALUES (42);--不合法(表名属于标示符之一)

二、基本类型:

最简单的SQL函数可能就是没有参数且返回基本类型的函数了,如:
CREATE FUNCTION one() RETURNS integerAS $$
SELECT 1 AS result; -- 查询多行记录时该列字段值为'1‘
$$ LANGUAGE SQL;
下面的例子声明了基本类型作为函数的参数。
CREATE FUNCTION add_em(integer,integer) RETURNS integer AS $$
SELECT $1 + $2; ----- 返回值一般是与最后的语句的结果的类型(也与这句话呼应:除非函数声明为返回void,否则最后一条语句必须是SELECT
$$ LANGUAGE SQL;
# 通过select调用函数。
postgres=# SELECT add_em(1,2) AS answer;
answer
--------
3
(1 row)
在下面的例子中,函数体内包含多个SQL语句,它们之间是用分号进行分隔的。----除非函数声明为返回void,否则最后一条语句必须是SELECT (很重要的一句话)
CREATE FUNCTION tf1 (integer,numeric) RETURNS numeric AS $$
UPDATE bank SET balance = balance - $2 WHERE accountno = $1;
SELECT balance FROM bank WHERE accountno = $1;
$$ LANGUAGE SQL;

http://www.cnblogs.com/stephen-liu74/archive/2012/06/04/2312194.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读