什么是高级?这就叫高级—openGauss(156)

31 阅读1分钟

#openGauss #入门 #安装 #数据库 #开源

知识来源:docs-opengauss.osinfra.cn/zh/

用例:

set behavior_compat_options='allow_procedure_compile_check';

create table int4_table(a NUMBER, b VARCHAR2(5));
insert into int4_table(a) values(3,'johan');
create table int_table(a NUMBER, d NUMBER, b VARCHAR2(5));
insert into int_table(a, d, b) values(3, 6,'johan');

create or replace package pck1 is
cursor cur1 is select * from int4_table;
var1 cur1%rowtype:=(3, 'ada');
procedure ppp1;
procedure ppp2(a cur1%rowtype);
end pck1;
/

create or replace package body pck1 is
procedure ppp1() is
cursor cur2 is select * from int_table;
begin
open cur2;
fetch cur2 into var1;
ppp2(var1);
raise info '%', var1.a;
end;

procedure ppp2(a cur1%rowtype) is
begin
    raise info '%', a.a;
end;
end pck1;
/

call pck1.ppp1();
ALTER TABLE int_table DROP COLUMN d;
call pck1.ppp1();

须知:

  • %TYPE不支持引用复合类型或RECORD类型变量的类型、RECORD类型的某列类型、跨PACKAGE复合类型变量的某列类型、跨PACKAGE cursor变量的某列类型等。
  • %ROWTYPE不支持引用复合类型或RECORD类型变量的类型、跨PACKAGE cursor的类型。

#openGauss #入门 #安装 #数据库 #开源

知识来源:docs-opengauss.osinfra.cn/zh/