CREATE FUNCTION SQL - Language Statements CREATE FUNCTION Defines a new function 1998-09-09 CREATE FUNCTION name ( [ ftype [, ...] ] ) RETURNS rtype AS path LANGUAGE 'langname' 1998-09-09 Inputs name The name of a function to create. ftype The data type of function arguments. rtype The return data type. path May be either an SQL-query or an absolute path to an object file. langname may be 'C', 'sql', 'internal' or 'plname', where 'plname' is the name of a created procedural language. See CREATE LANGUAGE for details. 1998-09-09 Outputs CREATE This is returned if the command completes successfully. 1998-09-09 Description CREATE FUNCTION allows a Postgres user to register a function with a database. Subsequently, this user is treated as the owner of the function. 1998-09-09 Notes Refer to the chapter on functions in the PostgreSQL Programmer's Guide for further information. Use DROP FUNCTION to drop user-defined functions. Usage To create a simple SQL function: CREATE FUNCTION one() RETURNS int4 AS 'SELECT 1 AS RESULT' LANGUAGE 'sql'; SELECT one() AS answer; answer ------ 1 To create a C function, calling a routine from a user-created shared library. This particular routine calculates a check digit and returns TRUE if the check digit in the function parameters is correct. It is intended for use in a CHECK contraint. CREATE FUNCTION ean_checkdigit(bpchar, bpchar) RETURNS bool AS '/usr1/proj/bray/sql/funcs.so' 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)) ); Bugs A C function cannot return a set of values. Compatibility CREATE FUNCTION is a Postgres language extension. 1998-09-09 SQL/PSM PSM stands for Persistent Stored Modules. It is a procedural language and it was originally hoped that PSM would be ratified as an official standard by late 1996. As of mid-1998, this has not yet happened, but it is hoped that PSM will eventually become a standard. SQL/PSM CREATE FUNCTION has the following syntax: CREATE FUNCTION name ( [ [ IN | OUT | INOUT ] parm type [, ...] ] ) RETURNS rtype LANGUAGE 'langname' ESPECIFIC routine SQL-statement