楼主的分数给得太少:-)以下是我的试验结果: iihero=# CREATE FUNCTION one() RETURNS integer iihero-# AS 'SELECT 1 as ONE' LANGUAGE SQL; CREATE FUNCTION iihero=# SELECT one() AS answer; answer 1 (1 row) iihero=# \encoding gbk iihero=# SELECT one() AS answer; answer -------- 1 (1 row) iihero=# CREATE TABLE EMP ( iihero(# name text, iihero(# salary integer, iihero(# age integer, iihero(# cubicle point iihero(# ); CREATE TABLE iihero=# INSERT INTO EMP VALUES ('Sam', 1200, 16, '(1,1)'); INSERT 0 1 iihero=# INSERT INTO EMP VALUES ('Claire', 5000, 32, '(1,2)'); INSERT 0 1 iihero=# INSERT INTO EMP VALUES ('Andy', -1000, 2, '(1,3)'); INSERT 0 1 iihero=# INSERT INTO EMP VALUES ('Bill', 4200, 36, '(2,1)'); INSERT 0 1 iihero=# INSERT INTO EMP VALUES ('Ginger', 4800, 30, '(2,4)'); INSERT 0 1 iihero=# iihero=# CREATE FUNCTION double_salary(EMP) RETURNS integer iihero-# AS 'SELECT $1.salary * 2 AS salary' LANGUAGE SQL; CREATE FUNCTION iihero=# SELECT name, double_salary(EMP) AS dream iihero-# FROM EMP iihero-# WHERE EMP.cubicle ~= '(2,1)'::point; name | dream ------+------- Bill | 8400 (1 row) iihero=# CREATE FUNCTION add_one(integer) RETURNS integer as 'func1' LANGUAGE C; CREATE FUNCTION iihero=# CREATE FUNCTION makepoint(point, point) RETURNS point iihero-# AS 'func1' LANGUAGE C; CREATE FUNCTION iihero=# CREATE FUNCTION copytext(text) RETURNS text iihero-# AS 'func1' LANGUAGE C; CREATE FUNCTION iihero=# iihero=# CREATE FUNCTION c_overpaid(EMP, integer) RETURNS boolean iihero-# AS 'func1' LANGUAGE C; CREATE FUNCTION iihero=# select add_one(3) as four; four ------ 4 (1 row) iihero=# SELECT makepoint('(1,2)'::point, '(3,4)'::point ) AS newpoint; newpoint ---------- (1,4) (1 row) iihero=# SELECT copytext('hello world!'); copytext -------------- hello world! (1 row) iihero=# SELECT name, c_overpaid(EMP, 1500) AS overpaid iihero-# FROM EMP iihero-# WHERE name = 'Bill' or name = 'Sam'; name | overpaid ------+---------- Sam | f Bill | t (2 rows)中间创建函数用的func1.dll,你要把它编译到目录pgsql_home\lib下边。必须是MD(多线程链接库)方式。 整个过程很简单。使用vs2005编译即可。 你稍后在我的资源里头应该能下载到完整的工程,比较简单的。我已经上传了。 PostgreSQL简单函数创建: http://download.csdn.net/source/2979577
iihero=# CREATE FUNCTION one() RETURNS integer
iihero-# AS 'SELECT 1 as ONE' LANGUAGE SQL;
CREATE FUNCTION
iihero=# SELECT one() AS answer;
answer
1
(1 row)
iihero=# \encoding gbk
iihero=# SELECT one() AS answer;
answer
--------
1
(1 row)
iihero=# CREATE TABLE EMP (
iihero(# name text,
iihero(# salary integer,
iihero(# age integer,
iihero(# cubicle point
iihero(# );
CREATE TABLE
iihero=# INSERT INTO EMP VALUES ('Sam', 1200, 16, '(1,1)');
INSERT 0 1
iihero=# INSERT INTO EMP VALUES ('Claire', 5000, 32, '(1,2)');
INSERT 0 1
iihero=# INSERT INTO EMP VALUES ('Andy', -1000, 2, '(1,3)');
INSERT 0 1
iihero=# INSERT INTO EMP VALUES ('Bill', 4200, 36, '(2,1)');
INSERT 0 1
iihero=# INSERT INTO EMP VALUES ('Ginger', 4800, 30, '(2,4)');
INSERT 0 1
iihero=#
iihero=# CREATE FUNCTION double_salary(EMP) RETURNS integer
iihero-# AS 'SELECT $1.salary * 2 AS salary' LANGUAGE SQL;
CREATE FUNCTION
iihero=# SELECT name, double_salary(EMP) AS dream
iihero-# FROM EMP
iihero-# WHERE EMP.cubicle ~= '(2,1)'::point;
name | dream
------+-------
Bill | 8400
(1 row)
iihero=# CREATE FUNCTION add_one(integer) RETURNS integer as 'func1' LANGUAGE C;
CREATE FUNCTION
iihero=# CREATE FUNCTION makepoint(point, point) RETURNS point
iihero-# AS 'func1' LANGUAGE C;
CREATE FUNCTION
iihero=# CREATE FUNCTION copytext(text) RETURNS text
iihero-# AS 'func1' LANGUAGE C;
CREATE FUNCTION
iihero=#
iihero=# CREATE FUNCTION c_overpaid(EMP, integer) RETURNS boolean
iihero-# AS 'func1' LANGUAGE C;
CREATE FUNCTION
iihero=# select add_one(3) as four;
four
------
4
(1 row)
iihero=# SELECT makepoint('(1,2)'::point, '(3,4)'::point ) AS newpoint;
newpoint
----------
(1,4)
(1 row)
iihero=# SELECT copytext('hello world!');
copytext
--------------
hello world!
(1 row)
iihero=# SELECT name, c_overpaid(EMP, 1500) AS overpaid
iihero-# FROM EMP
iihero-# WHERE name = 'Bill' or name = 'Sam';
name | overpaid
------+----------
Sam | f
Bill | t
(2 rows)中间创建函数用的func1.dll,你要把它编译到目录pgsql_home\lib下边。必须是MD(多线程链接库)方式。
整个过程很简单。使用vs2005编译即可。
你稍后在我的资源里头应该能下载到完整的工程,比较简单的。我已经上传了。
PostgreSQL简单函数创建: http://download.csdn.net/source/2979577