warehouse_db=# CREATE TABLE warehouse_tbl
(
warehouse_id INTEGER NOT NULL,
warehouse_name TEXT NOT NULL,
year_created INTEGER,
street_address TEXT,
city CHARACTER VARYING(100),
state CHARACTER VARYING(2),
zip CHARACTER VARYING(10),
CONSTRAINT "PRIM_KEY" PRIMARY KEY (warehouse_id)
);

CREATE TABLE history
(
history_id INTEGER NOT NULL DEFAULT nextval('hist_id_seq'),
date TIMESTAMP WITHOUT TIME ZONE,
amount INTEGER,
data TEXT,
customer_id INTEGER,
warehouse_id INTEGER,
CONSTRAINT "PRM_KEY" PRIMARY KEY (history_id),
CONSTRAINT "FORN_KEY"
FOREIGN KEY (warehouse_id)
REFERENCES warehouse_tb1(warehouse_id)
);

warehouse_db=# \d warehouse_tb1
Table "public.warehouse_tb1"
Column | Type | Modifiers
----------------+------------------------+-----------
warehouse_id | integer | not null
warehouse_name | text | not null
year_created | integer |
street_address | text |
city | character varying(100) |
state | character varying(2) |
zip | character varying(10) |
Indexes:
"PRIM_KEY" PRIMARY KEY, btree (warehouse_id), tablespace "tbs_yl"
Referenced by:
TABLE "history" CONSTRAINT "FORN_KEY" FOREIGN KEY (warehouse_id) REFERENCES warehouse_tb1(warehouse_id)
Tablespace: "tbs_yl"

warehouse_db=# alter table warehouse_tb1 add column phone_no integer;
ALTER TABLE
warehouse_db=# \d warehouse_tb1
Table "public.warehouse_tb1"
Column | Type | Modifiers
----------------+------------------------+-----------
warehouse_id | integer | not null
warehouse_name | text | not null
year_created | integer |
street_address | text |
city | character varying(100) |
state | character varying(2) |
zip | character varying(10) |
phone_no | integer |
Indexes:
"PRIM_KEY" PRIMARY KEY, btree (warehouse_id), tablespace "tbs_yl"
Referenced by:
TABLE "history" CONSTRAINT "FORN_KEY" FOREIGN KEY (warehouse_id) REFERENCES warehouse_tb1(warehouse_id)
Tablespace: "tbs_yl"

warehouse_db=# alter table warehouse_tb1 drop column phone_no;
ALTER TABLE
warehouse_db=# \d warehouse_tb1
Table "public.warehouse_tb1"
Column | Type | Modifiers
----------------+------------------------+-----------
warehouse_id | integer | not null
warehouse_name | text | not null
year_created | integer |
street_address | text |
city | character varying(100) |
state | character varying(2) |
zip | character varying(10) |
Indexes:
"PRIM_KEY" PRIMARY KEY, btree (warehouse_id), tablespace "tbs_yl"
Referenced by:
TABLE "history" CONSTRAINT "FORN_KEY" FOREIGN KEY (warehouse_id) REFERENCES warehouse_tb1(warehouse_id)
Tablespace: "tbs_yl"

warehouse_db=# insert into warehouse_tb1(warehouse_id,warehouse_name,year_created,street_address,city,state,zip) values (1,'Mark Corp',2009,'207-F Main Service Road Ease','New London','CT',4321);
INSERT 0 1
warehouse_db=# select warehouse_id,warehouse_name,street_address from warehouse_tb1;
warehouse_id | warehouse_name | street_address
--------------+----------------+------------------------------
1 | Mark Corp | 207-F Main Service Road Ease
(1 row)
warehouse_db=# update warehouse_tb1 set year_created=2010 where year_created=2009;
UPDATE 1
warehouse_db=# select warehouse_id,year_created from warehouse_tb1;
warehouse_id | year_created
--------------+--------------
1 | 2010
(1 row)
warehouse_db=# insert into warehouse_tb1(warehouse_id,warehouse_name,year_created,street_address,city,state,zip)
warehouse_db-# values (2,'Bill & Co',2014,'Lilly Road','New London','CT',4321);
INSERT 0 1
warehouse_db=# insert into warehouse_tb1(warehouse_id,warehouse_name,year_created,street_address,city,state,zip)
warehouse_db-# values (3,'West point',2013,'Down Town','New London','CT',4321);
INSERT 0 1
warehouse_db=# select warehouse_id,warehouse_name,street_address from warehouse_tb1;
warehouse_id | warehouse_name | street_address
--------------+----------------+------------------------------
1 | Mark Corp | 207-F Main Service Road Ease
2 | Bill & Co | Lilly Road
3 | West point | Down Town
(3 rows)
warehouse_db=# delete from warehouse_tb1 where warehouse_name='Bill & Co';
DELETE 1
warehouse_db=# select warehouse_id,warehouse_name,street_address from warehouse_tb1;
warehouse_id | warehouse_name | street_address
--------------+----------------+------------------------------
1 | Mark Corp | 207-F Main Service Road Ease
3 | West point | Down Town
(2 rows)
warehouse_db=# create table tools(tool_id integer unique,too_name text,tool_class numeric);
CREATE TABLE
warehouse_db=# create table mytools(tool_id integer,tool_name text,tool_class numeric,unique(tool_id));
CREATE TABLE
warehouse_db=#
warehouse_db=# create table cards(card_id integer,owner_number integer,owner_name text,unique(card_id,owner_number));
CREATE TABLE
warehouse_db=# create table tools(tool_id integer not null,tool_name text,tool_class numeric);
CREATE TABLE
warehouse_db=# create table mytools(tool_id integer not null,tool_name text not null,tool_class numeric);
CREATE TABLE
warehouse_db=# create table tools(tool_id integer primary key,tool_name text,tool_class numeric);
CREATE TABLE
warehouse_db=# create table mytools(tool_id integer ,tool_name text,tool_class numeric,primary key(tool_id,tool_name));
CREATE TABLE
warehouse_db=# \d+ tools
Table "public.tools"
Column | Type | Modifiers | Storage | Stats target | Description
------------+---------+-----------+----------+--------------+-------------
tool_id | integer | not null | plain | |
tool_name | text | | extended | |
tool_class | numeric | | main | |
Indexes:
"tools_pkey" PRIMARY KEY, btree (tool_id), tablespace "tbs_yl"
Tablespace: "tbs_yl"

warehouse_db=# \d+ mytools
Table "public.mytools"
Column | Type | Modifiers | Storage | Stats target | Description
------------+---------+-----------+----------+--------------+-------------
tool_id | integer | not null | plain | |
tool_name | text | not null | extended | |
tool_class | numeric | | main | |
Indexes:
"mytools_pkey" PRIMARY KEY, btree (tool_id, tool_name), tablespace "tbs_yl"
Tablespace: "tbs_yl"

warehouse_db=# create table tools(tool_id integer primary key,tool_name text,tool_class numeric);
CREATE TABLE
warehouse_db=# create table tools_list(list_id integer primary key,tool_id integer references tools (tool_id),list_name text);
CREATE TABLE
warehouse_db=# \d+ tools
Table "public.tools"
Column | Type | Modifiers | Storage | Stats target | Description
------------+---------+-----------+----------+--------------+-------------
tool_id | integer | not null | plain | |
tool_name | text | | extended | |
tool_class | numeric | | main | |
Indexes:
"tools_pkey" PRIMARY KEY, btree (tool_id), tablespace "tbs_yl"
Referenced by:
TABLE "tools_list" CONSTRAINT "tools_list_tool_id_fkey" FOREIGN KEY (tool_id) REFERENCES tools(tool_id)
Tablespace: "tbs_yl"

warehouse_db=# \d+ mytools
Did not find any relation named "mytools".
warehouse_db=# \d+ tools_list
Table "public.tools_list"
Column | Type | Modifiers | Storage | Stats target | Description
-----------+---------+-----------+----------+--------------+-------------
list_id | integer | not null | plain | |
tool_id | integer | | plain | |
list_name | text | | extended | |
Indexes:
"tools_list_pkey" PRIMARY KEY, btree (list_id), tablespace "tbs_yl"
Foreign-key constraints:
"tools_list_tool_id_fkey" FOREIGN KEY (tool_id) REFERENCES tools(tool_id)
Tablespace: "tbs_yl"

CREATE OR REPLACE FUNCTION func_declare()
RETURNS text AS $$
DECLARE --Variable store declared not null with a default value.
nanvar VARCHAR NOT NULL := 'notnull text';--Declaring an integer to hold integer constant.
digit CONSTANT INTEGER := 10;
/* declaring variable with
a default value.*/
helloworld VARCHAR DEFAULT 'PostgreSQL rocks !';
BEGIN
RETURN nanvar;
END;
$$ LANGUAGE 'plpgsql';

CREATE OR REPLACE FUNCTION func_declarell()
RETURNS text AS $$
DECLARE --Variable store declared not null with a default value.
nanvar VARCHAR NOT NULL := 'notnull text';--Declaring an integer to hold integer constant.
digit CONSTANT INTEGER := 10;
/* declaring variable with
a default value.*/
helloworld VARCHAR DEFAULT 'PostgreSQL rocks !';
BEGIN
RETURN nanvar;
END;
$$ LANGUAGE 'plpgsql';

CREATE OR REPLACE FUNCTION func_declarell()
RETURNS text AS $$
DECLARE --Variable store declared not null with a default value.
nanvar VARCHAR NOT NULL := 'notnull text';--Declaring an integer to hold integer constant.
digit CONSTANT INTEGER := 10;
/* declaring variable with
a default value.*/
helloworld VARCHAR DEFAULT 'PostgreSQL rocks !';
BEGIN
RETURN digit;
END;
$$ LANGUAGE 'plpgsql';

warehouse_db=# create or replace function alias_explain(int)
returns integer as $$
declare
total alias for $1;
begin
return total*10;
end;
$$ language plpgsql;
CREATE FUNCTION
warehouse_db=# select alias_explain(10);
alias_explain
---------------
100
(1 row)

warehouse_db=# create or replace function alias_explain(int)
warehouse_db-# returns integer as $$
warehouse_db$# begin
warehouse_db$# return $1 * 10;
warehouse_db$# end;
warehouse_db$# $$language plpgsql;
CREATE FUNCTION
warehouse_db=# select alias_explain(10);
alias_explain
---------------
100
(1 row)

warehouse_db=# create or replace function alias_explain(total int)
warehouse_db-# returns integer as $$
warehouse_db$# begin
warehouse_db$# return total * 10;
warehouse_db$# end;
warehouse_db$# $$language plpgsql;
CREATE FUNCTION
warehouse_db=# select alias_explain(10);
alias_explain
---------------
100
(1 row)

warehouse_db=# create or replace function func_param(a int,IN b int,OUT plus int,OUT sub int)as $$
warehouse_db$# begin
warehouse_db$# plus :=a +b;
warehouse_db$# sub :=a-b;
warehouse_db$# end;
warehouse_db$# $$language plpgsql;
CREATE FUNCTION
warehouse_db=# select func_param(10,5);
func_param
------------
(15,5)
(1 row)
warehouse_db=# create or replace function simple_loop(subjects integer) returns integer as $$
warehouse_db$# declare
warehouse_db$# grade integer := 10;
warehouse_db$# begin
warehouse_db$# loop
warehouse_db$# grade := grade * subjects;
warehouse_db$# if (grade >= 100) then
warehouse_db$# exit;
warehouse_db$# end if;
warehouse_db$# end loop;
warehouse_db$# return grade;
warehouse_db$# end;
warehouse_db$# $$language plpgsql;
CREATE FUNCTION
warehouse_db=# select simple_loop(10);
simple_loop
-------------
100
(1 row)
warehouse_db=# create or replace function while_loop(subjects integer) returns integer as $$
declare
grade integer := 10;
begin
while grade <=100
loop
grade := grade * subjects;
end loop;
return grade;
end;
$$language plpgsql;
CREATE FUNCTION
warehouse_db=#
warehouse_db=# select while_loop(5);
while_loop
------------
250
(1 row)

warehouse_db=# create or replace function first_for_loop(subjects integer) returns integer as $$
warehouse_db$# declare
warehouse_db$# grade integer :=2;
warehouse_db$# begin
warehouse_db$# for i in 1..10
warehouse_db$# loop
warehouse_db$# grade := grade * subjects;
warehouse_db$# end loop;
warehouse_db$# return grade;
warehouse_db$# end;
warehouse_db$# $$ language plpgsql;
CREATE FUNCTION
warehouse_db=# select first_for_loop(2);
first_for_loop
----------------
2048
(1 row)
warehouse_db=# create or replace function second_for_loop(subjects integer) returns integer as $$
warehouse_db$# declare
warehouse_db$# grade integer :=2;
warehouse_db$# begin
warehouse_db$# for i in reverse 10..1 by 2
warehouse_db$# loop
warehouse_db$# grade := grade * subjects;
warehouse_db$# end loop;
warehouse_db$# return grade;
warehouse_db$# end;
warehouse_db$# $$ language plpgsql;
CREATE FUNCTION
warehouse_db=# select second_for_loop(2);
second_for_loop
-----------------
64
(1 row)

warehouse_db=# create or replace function for_loop_query(query varchar) returns integer as $$
warehouse_db$# declare
warehouse_db$# count integer := 0;
warehouse_db$# table_records record;
warehouse_db$# begin
warehouse_db$# for table_records in execute query
warehouse_db$# loop
warehouse_db$# count := count +1;
warehouse_db$# end loop;
warehouse_db$# return count;
warehouse_db$# end;
warehouse_db$# $$language plpgsql;
CREATE FUNCTION
warehouse_db=# select for_loop_query('select * from warehouse_tb1');
for_loop_query
----------------
2
(1 row)

warehouse_db=# select * from warehouse_tb1;
warehouse_id | warehouse_name | year_created | street_address | city | state | zip
--------------+----------------+--------------+------------------------------+------------+-------+------
1 | Mark Corp | 2010 | 207-F Main Service Road Ease | New London | CT | 4321
3 | West point | 2013 | Down Town | New London | CT | 4321
(2 rows)

warehouse_db=# create or replace function how_to_raise() returns integer as $$
warehouse_db$# declare
warehouse_db$# total integer;
warehouse_db$# begin
warehouse_db$# select count(*) into total from warehouse_tb1;
warehouse_db$# if (total > 0) then
warehouse_db$# return total;
warehouse_db$# else
warehouse_db$# raise notice 'table is empty,%,rows',total;
warehouse_db$# end if;
warehouse_db$# end;
warehouse_db$# $$language plpgsql;
CREATE FUNCTION
warehouse_db=# select how_to_raise();
how_to_raise
--------------
2
(1 row)

warehouse_db=# delete from warehouse_tb1 ;
DELETE 2
warehouse_db=# select how_to_raise();
NOTICE: table is empty,0,rows
ERROR: control reached end of function without RETURN
CONTEXT: PL/pgSQL function how_to_raise()
warehouse_db=#

warehouse_db=# create or replace function test_sqlerrm( ) returns integer as $$
declare
var int :=0;
begin
raise notice 'hello %','1234';
var :=(select 1 + 1 );
return var;
end;
$$language plpgsql;
CREATE FUNCTION
Time: 6.290 ms
warehouse_db=# select test_sqlerrm();
NOTICE: hello 1234
-[ RECORD 1 ]+--
test_sqlerrm | 2

Time: 1.042 ms
warehouse_db=# \x
Expanded display is off.
warehouse_db=# select test_sqlerrm();
NOTICE: hello 1234
test_sqlerrm
--------------
2
(1 row)

Time: 1.160 ms

warehouse_db=# create table accounts(owner text,balance numeric);
CREATE TABLE
warehouse_db=# insert into accounts values ('Bob',100);
INSERT 0 1
warehouse_db=# insert into accounts values ('Mary',200);
INSERT 0 1
warehouse_db=# update accounts set balance = balance - 14.00 where owner = 'Bob';
UPDATE 1
warehouse_db=# update accounts set balance = balance + 14.00 where owner = 'Mary';
UPDATE 1

warehouse_db=# CREATE OR REPLACE FUNCTION transfer(
warehouse_db(# i_payer text,
warehouse_db(# i_recipient text,
warehouse_db(# i_amount numeric(15,2))
warehouse_db-# RETURNS text
warehouse_db-# AS
warehouse_db-# $$
warehouse_db$# DECLARE
warehouse_db$# payer_bal numeric;
warehouse_db$# BEGIN
warehouse_db$# SELECT balance INTO payer_bal
warehouse_db$# FROM accounts
warehouse_db$# WHERE owner = i_payer FOR UPDATE;
warehouse_db$# IF NOT FOUND THEN
warehouse_db$# RETURN 'Payer account not found';
warehouse_db$# END IF;
warehouse_db$# IF payer_bal < i_amount THEN
warehouse_db$# RETURN 'Not enough funds';
warehouse_db$# END IF;
warehouse_db$# UPDATE accounts
warehouse_db$# SET balance = balance + i_amount
warehouse_db$# WHERE owner = i_recipient;
warehouse_db$# IF NOT FOUND THEN
warehouse_db$# RETURN 'Recipient does not exist';
warehouse_db$# END IF;
warehouse_db$# UPDATE accounts
warehouse_db$# SET balance = balance - i_amount
warehouse_db$# WHERE owner = i_payer;
warehouse_db$# RETURN 'OK';
warehouse_db$# END;
warehouse_db$# $$ LANGUAGE plpgsql;
CREATE FUNCTION
warehouse_db=# select * from accounts ;
owner | balance
-------+---------
Bob | 86.00
Mary | 214.00
(2 rows)

warehouse_db=# select * from transfer('Bob','Mary',14.00);
transfer
----------
OK
(1 row)

warehouse_db=# select * from accounts ;
owner | balance
-------+---------
Mary | 228.00
Bob | 72.00
(2 rows)

warehouse_db=# select * from transfer('Fred','Mary',14.00);
transfer
-------------------------
Payer account not found
(1 row)

warehouse_db=# select * from transfer('Bob','Fred',14.00);
transfer
--------------------------
Recipient does not exist
(1 row)

warehouse_db=# select * from transfer('Bob','Mary',500.00);
transfer
------------------
Not enough funds
(1 row)

PostgreSQL function examples的更多相关文章

  1. How to debug PostgreSQL function with pgAdminIII

    How to debug plpgsql with pgAdminIII [root@localhost soft_bak]# git clone git://git.postgresql.org/g ...

  2. PostgreSQL trigger (function) examples

    postgres=# \c warehouse_db You are now connected to database "warehouse_db" as user " ...

  3. postgresql function 返回 select

    pq函数功能很强大,我打算把统计的功能都放在数据库端.优势让运算离数据更近一些,缺点无法服用代码.牺牲了django的灵魂性,项目必须依赖postgresql. 项目中,希望实现返回select内容 ...

  4. 移植Oracle procedure 到 postgresql

    1.登录postgresql psql -h 192.168.137.131 -p 5432 postgres satusc@6789#JKL 2.创建用户 CREATE USER name thun ...

  5. WRITING POSTGRESQL TRIGGERS IN GO

    转自:https://www.opsdash.com/blog/postgresql-triggers-golang.html 可以学习如何使用golang 编写pg extension Trigge ...

  6. ORACLE_TO_CHAR Function

    TECHONTHENNTE  WEBSITE: https://www.techonthenet.com/oracle/functions/to_char.php Oracle / PLSQL: TO ...

  7. PostgreSQL 存储过程/函数

    1.有用的链接 postgresql 常用小函数 Postgresql数据库的一些字符串操作函数 PostgreSQL function里面调用function PostgreSQL学习手册(函数和操 ...

  8. postgresql spi开发笔记

    #include "postgres.h" #include "fmgr.h" #include <string.h> #ifdef PG_MODU ...

  9. [JavaScript]顺序的异步执行

    我们知道,在适用js的时候,程序是单线程执行的,而且如果遇到阻塞就会将浏览器卡死. 能否异步的执行,让程序不再卡呢? 可以,用setTimeout. 但是,问题又来了,如果我有这样的要求: 执行一个函 ...

随机推荐

  1. 简述UIScrollView的属性和用法

    contentOffset 默认CGPointZero,用来设置scrollView的滚动偏移量.       // 设置scrollView的滚动偏移量       scrollView.conte ...

  2. C# 可视化读取文件、文件夹

    OpenFileDialog fd = new OpenFileDialog(); fd.Filter = "txt files (*.txt)|*.txt|All files(*.*)|* ...

  3. poj2689Prime Distance 素数测试

    朴素素数测试是O(x1/2)的,每一个数都测试下来就炸了 然而如果全部预处理的话才是做大死,时间空间各种炸(大约有1亿个数) 所以怎么平衡一下呢? 其实在预处理的时候可以只处理一半:把21474836 ...

  4. python字典

    1.字典解释 映射:通过名字来引用值得数据结构,字典是python中唯一内建的映射类型,字典中的值并没有特殊的顺序,都存储在一个特定的键下,键可以使数字.字符串.元组,通过查找某个特定键,就可以找到对 ...

  5. [IOS] 利用@IBInspectable

    某些uiview中设置 这个关键字 IBInspectable 可以让其设置的属性,在右侧的属性栏目里面进行直接设置, 这是最近看了一下wwdc的一个视频学习到的,可以方便的进行 UI的测试,

  6. Javascript实现页面加载完成后自动刷新一遍清除缓存文件

    我们有些时候在加载页面时,会出现缓存文件对当前文件的表现效果有干扰,如有些缓存的样式文件会是页面效果发生改变,这时我们希望页面在加载时能自动刷新一遍清楚缓存文件. 但是由于跳转页面肯定会用到BOM部分 ...

  7. linux常用命令(二)

    文件处理命令接上一篇 cat concatenate and display fils 查看小文件 more分页显示文件 空格或者f翻页,回车下一行,Q或q退出. head –num  num代表行数 ...

  8. pip安装 exception记录

    在下载p4c-bm的时候,执行 sudo pip install -r requirements.txt 时,出现exception: Exception: Traceback (most recen ...

  9. socket - socketserver - start TCP server

    前面提到如何使用socket模块启动tcpserver: 创建socket:sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 绑定ip: ...

  10. vpn

    https://itunes.apple.com/us/app/sonicwall-mobile-connect/id822514576?mt=12