数据库

 首页 > 数据库 > postgresql > PostgreSQL存储过程基础入门

PostgreSQL存储过程基础入门

分享到:
【字体:
导读:
         摘要:一、存储过程结构:Createorreplacefunction过程名(参数名参数类型,…..)returns返回值类型as$body$//声明变量Declare变量名变量类型;如:flagBoolean;变量赋值方式(变量名类型:值;)如:strtext:值;/strtext;str:值;Beg...

PostgreSQL存储过程基础入门

一、存储过程结构:

         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类型代替。

注:

存储float和real类型的数据的行为非常相似,但是numeric列的行为有点不同。Numeric类型不是存储接近的数,而是在小数后面进行后超出固定长度的部分进行四舍五入。如果我们存储太大的数据到其中,INSERT将失败。还要注意float和real也会对数字四舍五入;例如123.456789被四舍五入为123.457。

 

时间数据类型:

定义

意义

date

存储日期信息

time

存储时间信息

timestamp

存储日期和时间

interval

存储timestamp之间差别的信息

timestamptz

PostgreSQL扩展的类型,存储包含时区信息的timestamp

特殊数据类型:

定义

意义

box

矩形盒子

line

一组点

point

一对几何学的数字

lseg

一条线段

polygon

一条封闭的几何线

cidr或inet

一个IPv4的地址,录入192.168.0.1

macaddr

以MAC地址(以太网卡物理地址)

注:PostgreSQL也允许你使用SQL命令CREATE TYPE在数据库中建立你自己的类型。这通常不需要,而且在一定程度上,它是PostgreSQL独有的。

数组

通常,一个数组需要通过使用一个附加表实现。但是,数组的能力有时候很有用。建立数组的方法有两种:传统的PostgreSQL的方法和SQL99标准的方法。

PostgreSQL样式的数组

要将一个表的列定义为数组,你可以简单地在类型后面添加[];不需要定义元素的个数。即使定义了个数,也不会强制要求存储的个数。

Eg:

test=> CREATE TABLE empworkday (

test(>     refcode char(5),

test(>     workdays int[]

test(> );

往数组列中插入值:

test=> INSERT INTO empworkday VALUES(‘val01′,‘{0,1,0,1,1,1,1}’);

test=> INSERT INTO empworkday VALUES(‘val02′,‘{0,1,1,1,1,0,1}’);

SQL99样式的数字

在SQL99标准中,必须指出元素的个数。

Eg:

test=> CREATE TABLE empworkday (

test(>     refcode char(5),

test(>     workdays int array[7]

test(> );

test=> INSERT INTO empworkday VALUES(‘val01′,‘{0,1,0,1,1,1,1}’);

test=> INSERT INTO empworkday VALUES(‘val02′,‘{0,1,1,1,1,0,1}’);

三、连接字符:

         Postgresql存储过程中的连接字符不再是“+”,而是使用“||”。

四、  控制结构:

1、if 条件(五种形式)

IF ... THEN

IF ... THEN ... ELSE

IF ... THEN ... ELSE IF

IF ... THEN ... ELSIF ... THEN ... ELSE

IF ... THEN ... ELSEIF ... THEN ... ELSE(注:ELSEIF 是ELSIF 的别名)

2、循环

使用LOOP,EXIT,CONTINUE,WHILE, 和FOR 语句,可以控制PL/pgSQL 函数重复一系列命令。

1)、LOOP

[ <
PostgreSQL数据库备份与恢复操作过程记录
PostgreSQL数据库备份与恢复操作过程记录 最近关注的研究课题:PostgreSQL大数据增量备份与恢复。 欢迎有这方面资料/经验的盆友留下痕迹,希望能进一步交流。同时恳请看到的盆友帮忙传播,推介懂PostgreSQL的同学同事盆友给俺。谢了先! --------------- 下文为转述,如涉及版权,请与博主联系。   一、概...
PostgreSQL,MySQL,商业数据库,哪个更好?
PostgreSQL,MySQL,商业数据库,哪个更好? 数据库服务器在当今的商业应用中无疑是非常重要的设备。通用的商业数据库,如Oracel,微软的SQL Server,IBM的DB2,它们提供许多用户信赖的企业级特性,包括高级数据库存储,数据库管理工具,信息复制,数据备份等. During the past ten years, the open sour...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……