快速业务通道

SQL大全[1]

作者 佚名技术 来源 数据库编程 浏览 发布时间 2012-03-22
果你删除然后重新创建一个函数,新函数和旧的并非相同实体; 你会破坏现存的引用了原有函数的规则,视图,触发器等等.使用 CREATE OR REPLACE FUNCTION 可以改变一个函数的定义而又不会破坏引用该函数的对象.
例子
要创建一个简单的 SQL 函数∶
CREATE FUNCTION one() RETURNS integer
    AS ''SELECT 1 AS RESULT;''
    LANGUAGE SQL;
SELECT one() AS answer;
answer
--------
      1
这个例子通过调用一个用户创建的名为 funcs.so (扩展名因平台而异)的共享库过程创建一个 C 函数.该共享库文件应该位于服务器的动态搜索路径里.该路径计算一个检测位并且如果函数参数里的检测位 正确就返回一个 TRUE .这些可以通过用一个 CHECK 约束实现的.
CREATE FUNCTION ean_checkdigit(char, char) RETURNS boolean
    AS ''funcs'' LANGUAGE C;
CREATE TABLE product (
    id        char(8) PRIMARY KEY,
    eanprefix char(8) CHECK (eanprefix ~ ''[0-9]{2}-[0-9]{5}'')
                      REFERENCES brandname(ean_prefix),
    eancode   char(6) CHECK (eancode ~ ''[0-9]{6}''),
    CONSTRAINT ean    CHECK (ean_checkdigit(eanprefix, eancode))
);
这个例子创建一个在用户定义类型 complex 和内部类型 point 之间做类型转换的函数。该函数是用一个从 C 源代码编译的动态装载的对象来实现的。(我们演示了使用声明共享目标文件 的准确路径名的过时方法). 对于 PostgreSQL 而言,要自动寻找类型转换函数,SQL 函数必须和返回类型同名,因而重载是不可避免的。 该函数名通过使用 SQL定义里 AS 子句的第二种类型来重载:
CREATE FUNCTION point(complex) RETURNS point
    AS ''/home/bernie/pgsql/lib/complex.so'', ''complex_to_point''
    LANGUAGE C;
该函数的 C 声明可以是∶
Point * complex_to_point (Complex *z)
{
        Point *p;
        p = (Point *) palloc(sizeof(Point));
        p->x = z->x;
        p->y = z->y;
        return p;
}
兼容性 SQL92
在 SQL99 里的确定义了一个CREATE FUNCTION PostgreSQL 的和它类似但是不兼容.这个属性是不可移植的,可以使用的不同语言也是如此.
又见
DROP FUNCTION , LOAD, PostgreSQL程序员手册

--------------------------------------------------------------------------------

CREATE GROUP
CREATE GROUP
Name
CREATE GROUP  --  定义一个新的用户组
Synopsis
CREATE GROUP name [ [ WITH ] option [ ... ] ]

这里 option 可以是∶

     SYSID gid
   | USER username [, ...]

输入
name
组名。
gid
SYSID 子句可以用于选择 PostgreSQL 里新组的组标识(group id)。 不过,这样做不是必须的。
如果没有声明这个,将使用从 1 开始的,已分配的最高组标识加一作为缺省值。
username
包括到组里面的

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号