CREATE FUNCTION
CREATE FUNCTION
creates a new user-defined function (UDF) in an existing database.
See more in our Python UDF (user-defined functions) guide.
Permissions
The role must have the CREATE FUNCTION
permission at the database level.
Syntax
create_function_statement ::=
CREATE [ OR REPLACE ] FUNCTION function_name (argument_list)
RETURNS return_type
AS $$
{ function_body }
$$ LANGUAGE python
;
function_name ::= identifier
argument_list :: = { value_name type_name [, ...] }
value_name ::= identifier
return_type ::= type_name
function_body ::= Valid Python code
Parameters
Parameter |
Description |
---|---|
|
Create a new function, and overwrite any existing function by the same name. Does not return an error if the function already exists. |
|
The name of the function to create, which must be unique inside the database. |
|
A comma separated list of column definitions. A column definition includes a name identifier and a datatype. |
|
The SQL datatype of the return value, such as |
|
Python code, dollar-quoted ( |
Examples
Calculate distance between two points
CREATE OR REPLACE FUNCTION my_distance (x1 float, y1 float, x2 float, y2 float)
RETURNS FLOAT
AS $$
import math
if y1 < x1:
return 0.0
else:
return math.sqrt((y2 - y1) ** 2 + (x2 - x1) ** 2)
$$ LANGUAGE PYTHON;
-- Usage:
SELECT city, my_location, my_distance(x1,y1,x2,y2) from cities;
Calling files from other locations
-- Our script my_code.py is in ~/my_python_stuff
CREATE FUNCTION write_log()
RETURNS INT
AS $$
import sys
sys.path.append("/home/user/my_python_stuff")
import my_code as f
f.main()
return 1
$$ LANGUAGE PYTHON;
-- Usage:
SELECT write_log();