最近写一些mysql的存储过程和函数,发现网上比较有价值的文档很少,大都是照着手册上抄来的,有些实际问题解决不了,比如用变量作表名。 经过反复调试,总算找到解决办法,一下是一些简单的记录,比较零碎。部分内容转自http://my.opera.com/Dereky/blog/show
一、存储过程结构:
Create or replace function 过程名(参数名 参数类型,…..) returns 返回值类型 as
$body$
//声明变量
Declare
变量名变量类型;
如:
flag Boolean;
变量赋值方式(变量名类型 :=值;)
如:
str text :=值; / str text; str :=值;
Begin
函数体;
return 变量名; //存储过程中的返回语句
End;
$body$
Language plpgsql;
二、变量类型 :
除了postgresql内置的变量类型外,常用的还有 RECORD ,表示一条记录。
整数数据类型:
子类型
标准名
描述
Smalll integer
Smallint
一个2字节的符号型整数,可以存储-32768到32767的数字
Integer
Int
一个4字节的符号型整数,可以存储-2147483648到2147473647的数字
Serial
和integer一样,除了它的值通常是由PostgreSQL自动输入的。
浮点数据类型:(浮点数据也可以再细分,分为提供通用功能的浮点值和固定精度的数字)
子类型
标准名
描述
float
float(n)
支持最少精度为n,存储为最多8字节的浮点数。
float8
real
双精度(8字节)浮点数字
numeric
numeric(p,s)
拥有p个数字的实数,其中小数点后有s位。不像float,这始终是一个确切的数字,但工作效率比普通浮点数字低。
money
numeric(9,2)
PostgreSQL特有的类型,但在其他数据库里也普遍存在。Money类型从PostgreSQL 8.0开始不赞成使用,且可能在以后版本中取消。你应该使用number类型代替。
注