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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 06—PL/SQL编程下一篇: 提高SQL Server安全性的一些建议
关于SQL大全[1]的所有评论