云数据库 GaussDB-CREATE FUNCTION:示例

时间:2023-11-01 16:22:51

示例

 1 2 3 4 5 6 7 8 910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
--定义函数为SQL查询。openGauss=# CREATE FUNCTION func_add_sql(integer, integer) RETURNS integer    AS 'select $1 + $2;'    LANGUAGE SQL    IMMUTABLE    RETURNS NULL ON NULL INPUT;--利用参数名用 PL/pgSQL 自增一个整数。openGauss=# CREATE OR REPLACE FUNCTION func_increment_plsql(i integer) RETURNS integer AS $$        BEGIN                RETURN i + 1;        END;$$ LANGUAGE plpgsql;--返回RECORD类型CREATE OR REPLACE FUNCTION compute(i int, out result_1 bigint, out result_2 bigint)returns SETOF RECORDas $$begin    result_1 = i + 1;    result_2 = i * 10;return next;end;$$language plpgsql;--返回一个包含多个输出参数的记录。openGauss=# CREATE FUNCTION func_dup_sql(in int, out f1 int, out f2 text)    AS $$ SELECT $1, CAST($1 AS text) || ' is text' $$    LANGUAGE SQL;openGauss=# SELECT * FROM func_dup_sql(42);--计算两个整数的和,并返回结果。若果输入为null,则返回null。openGauss=# CREATE FUNCTION func_add_sql2(num1 integer, num2 integer) RETURN integerASBEGIN RETURN num1 + num2;END;/--创建package属性的重载函数openGauss=# create or replace function package_func_overload(col int, col2  int)return integer packageasdeclare    col_type text;begin     col := 122;         dbe_output.print_line('two int parameters ' || col2);         return 0;end;/openGauss=# create or replace function package_func_overload(col int, col2 smallint)return integer packageasdeclare    col_type text;begin     col := 122;         dbe_output.print_line('two smallint parameters ' || col2);         return 0;end;/--修改函数add的执行规则为IMMUTABLE,即参数不变时返回相同结果。openGauss=# ALTER FUNCTION func_add_sql2(INTEGER, INTEGER) IMMUTABLE;--将函数add的名称修改为add_two_number。openGauss=# ALTER FUNCTION func_add_sql2(INTEGER, INTEGER) RENAME TO add_two_number;--将函数add的属者改为omm。openGauss=# ALTER FUNCTION add_two_number(INTEGER, INTEGER) OWNER TO omm;--删除函数。openGauss=# DROP FUNCTION add_two_number;openGauss=# DROP FUNCTION func_increment_sql;openGauss=# DROP FUNCTION func_dup_sql;openGauss=# DROP FUNCTION func_increment_plsql;openGauss=# DROP FUNCTION func_add_sql;
support.huaweicloud.com/distributed-devg-v2-opengauss/gaussdb-v5r2c10-0575.html