VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

支持函数内调用独立package的属性

功能描述

PL/SQL里,对于函数的参数类型,可以通过%type引用package中的属性来声明。即PL/SQL里函数参数支持调用独立package的属性,具体用法参考示例

注意事项

该功能仅在数据库兼容模式为Oracle时支持(即数据库初始化时指定DBCOMPATIBILITY='A')。

示例

1、创建package。

create or replace package mytype as
    var1 varchar(22);
    var2 char(32);
end;
/

2、创建函数,并引用上一步package中的参数类型作为该函数的参数类型。

  • 兼容PostgreSQL风格的自定义函数创建语法:

    (1)创建函数fuc_1:

    create or replace function func_1(result mytype.var1%type) returns int
    as $$
    declare
    begin
    dbms_output.put_line('result is: '||result);
    return 1;
    end;
    $$
    language plpgsql;
    

    (2)调用函数fuc_1:

    set serveroutput on;  --使信息从存储过程传输回应用程序并输出在屏幕上
    select func_1('test');
    

    调用成功,返回结果如下:

    result is: test
    fun_1
    -------
        1
    (1 row)
    
  • 兼容Oracle风格的自定义函数创建语法:

    (1)创建函数fuc_2:

    create or replace function func_2 (result mytype.var2%type)
    return int
    as
    declare
    begin
    dbms_output.put_line('result is: '||result);
    return 1;
    end;
    /
    

    (2)调用函数fuc_2:

    set serveroutput on;  --使信息从存储过程传输回应用程序并输出在屏幕上
    select func_2('test');
    

    调用成功,返回结果如下:

    result is: test
    fun_2
    -------
        1
    (1 row)