PostgreSQL Type的创建与Type在函数中的使用
postgres=# create type complex as(
postgres(# r double precision,
postgres(# i double precision
postgres(# );
CREATE TYPE
postgres=# create type inventory_item as(
postgres(# name text,
postgres(# supplier_id integer,
postgres(# price numeric);
CREATE TYPE
postgres=# create table on_hand(
postgres(# item inventory_item,
postgres(# count integer
postgres(# );
CREATE TABLE
postgres=# insert into on_hand values (ROW('fuzzy dice',42,1.99),1000);
INSERT 0 1
postgres=# create function price_extension(inventory_item,integer) returns numeric 
postgres-# as 'sel
postgres-# as 'select $1.price * $2' language sql;
CREATE FUNCTION
postgres=# select price_extension(item,10) from on_hand;
 price_extension 
-----------------
           19.90
(1 row)
postgres=# insert into on_hand values (('Apple',22,4.4),2000);
INSERT 0 1
postgres=# select * from on_hand ;
          item          | count 
------------------------+-------
 ("fuzzy dice",42,1.99) |  1000
 (Apple,22,4.4)         |  2000
(2 rows)
postgres=# insert into on_hand values (row('Apple',22,4.4),2000);
INSERT 0 1
postgres=# select * from on_hand ;
          item          | count 
------------------------+-------
 ("fuzzy dice",42,1.99) |  1000
 (Apple,22,4.4)         |  2000
 (Apple,22,4.4)         |  2000
(3 rows)
postgres=# insert into on_hand values (ROW('Apple',22,4.4),2000);
INSERT 0 1
postgres=# select * from on_hand ;
          item          | count 
------------------------+-------
 ("fuzzy dice",42,1.99) |  1000
 (Apple,22,4.4)         |  2000
 (Apple,22,4.4)         |  2000
 (Apple,22,4.4)         |  2000
(4 rows)
postgres=# insert into on_hand values (ROW('Orange',22,55),3000);
INSERT 0 1
postgres=# insert into on_hand values (ROW('Orange1',22,66),3000);
INSERT 0 1
postgres=# \d on_hand 
       Table "public.on_hand"
 Column |      Type      | Modifiers 
--------+----------------+-----------
 item   | inventory_item | 
 count  | integer        |
postgres=# select item from on_hand ;
          item          
------------------------
 ("fuzzy dice",42,1.99)
 (Apple,22,4.4)
 (Apple,22,4.4)
 (Apple,22,4.4)
 (Orange,22,55)
 (Orange1,22,66)
(6 rows)
postgres=# select (item).name from on_hand where (item).price >10;
  name   
---------
 Orange
 Orange1
(2 rows)
postgres=# select (item).name from on_hand ;
    name    
------------
 fuzzy dice
 Apple
 Apple
 Apple
 Orange
 Orange1
(6 rows)
postgres=# select (on_hand.item).name from on_hand where (on_hand.item).price > 10;
  name   
---------
 Orange
 Orange1
(2 rows)
select just one field from the result of a function that returns a composite value,you'd need to
write something like:
select (my_func(...)).field from table_name;
postgres=# create table complex_col (col complex);
CREATE TABLE
postgres=# insert into complex_col values ((1.1,2.2));
INSERT 0 1
postgres=# insert into complex_col (col.r,col.i) values (8.8,9.9);
INSERT 0 1
postgres=# select * from complex_col ;
    col    
-----------
 (1.1,2.2)
 (8.8,9.9)
(2 rows)
PostgreSQL Type的创建与Type在函数中的使用的更多相关文章
- 在PostgreSQL自定义一个“优雅”的type
		是的,又是我,不要脸的又来混经验了.我们知道PostgreSQL是一个高度可扩展的数据库,这次我聊聊如何在PostgreSQL里创建一个优雅的type,如何理解优雅?大概就是不仅仅是type本身,其它 ... 
- [Python]利用type()动态创建类
		Python作为动态语言,可以动态地创建函数和类定义.比如说定义一个Hello类,就写一个hello.py模块: #! /usr/bin/env python #coding=utf-8 class ... 
- Python 对象(type/object/class) 作用域  一等函数  (慕课--Python高级,IO并发  第二章)
		在python中一共有两种作用域:全局作用域和函数作用域全局作用域:在全局都有效,全局作用域在程序执行时创建,在程序执行结束时销毁:所有函数以外的区域都是全局作用域:在全局作用域中定义的变量,都属于全 ... 
- 转载 SharePoint【Site Definition 系列】– 创建Content Type
		转载原地址: http://www.cnblogs.com/wsdj-ITtech/archive/2012/09/01/2470274.html Sharepoint本身就是一个丰富的大容器,里面 ... 
- Python 之 type方法创建类
		type()方法作为元类,用来创建类: type(类名, 父类的元组(针对继承的情况,可以为空),包含属性的字典(名称和值)) 以下代码可以用type()方法来创建: class Myclass(ob ... 
- 使用python type动态创建类
		使用python type动态创建类 X = type('X', (object,), dict(a=1)) # 产生一个新的类型 X 和下列方法class X(object): a = 1效 ... 
- type动态创建类
		在一些特定场合,需要动态创建类,比如创建表单,就会用到type动态创建类,举个例子: class Person(object): def __init__(self,name,age): self.n ... 
- Django - Form嵌套的Meta类 + 为什么type()能创建类
		Form里面嵌套了一个Meta类 class PostForm(forms.ModelForm): class Meta: model = Post # field to be exposed fie ... 
- Host does not support domain type kvm for virtualization type 'hvm' arch 'x86_64'
		kvm创建虚拟机报错: qemu-img create -f qcow2 /tmp/centos.qcow2 10G virt-install --virt-type kvm --name cento ... 
随机推荐
- 20145317彭垚 《Java程序设计》第五次实验报告
			20145317彭垚实验五 Java网络编程及安全 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.05.06 18:30-21: ... 
- Android 网络连接判断与处理
			Android网络连接判断与处理 获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:name="and ... 
- XPS to Blender 2.7x
			XPS to Blender 2.7x(Blender internal the easy way) Things we are gonna need are Blender 2.7x www.ble ... 
- sql  CRUD 增删改查复习汇总
			1.创建数据库create database 数据库名称删除数据库drop database 数据库名称2.创建表create table 表名( 列名 类型(长度) 自增长 主键 非空,)自增 ... 
- ubuntu下安装与卸载qt的方法
			http://blog.csdn.net/huyisu/article/details/24014407 ubuntu下安装与卸载qt的方法 分类: linux 2014-04-18 14:20 18 ... 
- C# IO操作,写入文本到txt文件.
			/// <summary> /// 写入日志文件 /// </summary> /// <param name="input"></par ... 
- hadoop 2.4 伪分布式模式
			1.core-site.xml 在<configuration></configuration>中插入 <property> <name>fs.defa ... 
- 修改delphi xe6 FMX Label字体颜色
			delphi fmx的字体等设置默认与皮肤有关,用代码直接修改字体颜色等是无效的,如何才能用代码修改呢?请按以下方法就可以: 1.在Object inspector中取消StlyedSettings中 ... 
- House Building---hdu5538(求表面积水题)
			题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5538 题意:有一个三维的图形,先给出平面图是n*m的矩形,每个位置都有不同个数的方块,a[i][j]代 ... 
- contentOffset,frame,bounds,contentSize,ContentInset
			contentOffset, 在UIScrollview里面滚动条用的最多,比如网易新闻的滚动条,肯定会用到这个. 我认为:它是下一个要显示的图片的左上角.设置了这个左上角后,下一次滚动时,邮戳直接到 ... 
