PL/pgSQL的anyelement例子

简介:

http://www.postgresonline.com/journal/archives/239-The-wonders-of-Any-Element.html

定义函数

复制代码
pgsql=# CREATE OR REPLACE FUNCTION diff_inc(IN anyelement, IN anyelement
pgsql(#   , OUT diff integer, OUT f_val anyelement, OUT l_val anyelement)
pgsql-# RETURNS record
pgsql-# AS
pgsql-# $$
pgsql$# BEGIN
pgsql$#    diff = ($1 - $2)::integer;
pgsql$#    f_val = $1 +1;
pgsql$#    l_val = $2 +1; 
pgsql$# END;
pgsql$# $$
pgsql-# language plpgsql;
CREATE FUNCTION
pgsql=# 
复制代码

带入不同的数据类型进行运算:

复制代码
pgsql=# select (diff_inc(12,14)).*;
 diff | f_val | l_val 
------+-------+-------
   -2 |    13 |    15
(1 row)


pgsql=# SELECT (diff_inc('2011-12-31'::date, '2012-01-05'::date)).*;
 diff |   f_val    |   l_val    
------+------------+------------
   -5 | 2012-01-01 | 2012-01-06
(1 row)

pgsql=# 
复制代码

但是,它有一个限制:一旦第一个参数确定,后面的参数必须和它的类型一致。









本文转自健哥的数据花园博客园博客,原文链接:http://www.cnblogs.com/gaojian/p/3190622.html,如需转载请自行联系原作者


目录
相关文章
|
关系型数据库 MySQL 数据库
PgSQL常用脚本语句
PgSQL常用脚本语句
99 0
|
C语言 Perl
OushuDB-PL 过程语言-二、PL/pgSQL的结构
OushuDB-PL 过程语言-二、PL/pgSQL的结构
48 0
|
SQL 关系型数据库 Java
OushuDB-PL 过程语言-PL/pgSQL - SQL过程语言
OushuDB-PL 过程语言-PL/pgSQL - SQL过程语言
64 0
|
关系型数据库 Perl