SQL大全[1]
作者 佚名技术
来源 数据库编程
浏览
发布时间 2012-03-22
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 FUNCTION Name CREATE FUNCTION -- 定义一个新函数 Synopsis CREATE [ OR REPLACE ] FUNCTION name ( [ argtype [, ...] ] ) RETURNS rettype AS ''definition'' LANGUAGE ''langname'' [ WITH ( attribute [, ...] ) ] CREATE [ OR REPLACE ] FUNCTION name ( [ argtype [, ...] ] ) RETURNS rettype AS ''obj_file'' , ''link_symbol'' LANGUAGE langname [ WITH ( attribute [, ...] ) ] 描述 CREATE FUNCTION定义一个新的函数. CREATE OR REPLACE FUNCTION 将要么创建一个新函数,要么替换现有的定义. 参数 name 要创建的函数名字.这个名字可以不是唯一的, 因为函数可以重载,胆识同名的函数必须有不同的参数类型. argtype 该函数的数据类型(如果有).输入类型可以是基本类型,也可以是复合类 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 06—PL/SQL编程下一篇: 提高SQL Server安全性的一些建议
关于SQL大全[1]的所有评论