Halo数据库同义词功能演示

同义词是数据库对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。在使用同义词时,HALO数据库将它翻译成对应对象的名字。与视图类似,同义词并不占用实际存储空间,只有在数据字典中保存了同义词的定义。本文将简单展示一下Halo数据库中新增的同义词相关功能。

一、语法定义

微信图片_20231009102510.png

create synonym synonym_name for schema_name.object_name;

二、相关方法演示

2.1、view

视图同义词的创建与调用。

create view oracle.vb as select * from dual;
create synonym syn_b for oracle.vb;
select * from syn_b;
drop synonym syn_b;

2.2、table

表同义词的创建与调用。

create table oracle.tc(a int);
create synonym syn_c for oracle.tc;
select * from syn_c;
insert into syn_c values(1);
select * from syn_c;
drop synonym syn_c;

2.3、procedure

存储过程同义词创建与调用。

create procedure oracle.protestd
as 
begin
raise notice 'oracle.protestd';
end;
/
create synonym syn_d for oracle.protestd;
call syn_d;
drop synonym syn_d;

2.4、function

函数同义词的创建与调用。

create function oracle.ftestf(a int,b int)
return int
as begin
return a + b;
end;
/
create synonym syn_f for oracle.ftestf;
select syn_f(25,26);
drop synonym syn_f;

2.5、sequence

序列同义词的创建与调用。

CREATE  SEQUENCE oracle.seq_truck_num MINVALUE 1 
MAXVALUE 9223372036854775807 
INCREMENT BY 1 
START with 5258752  
CACHE 20;
create or replace SYNONYM sy_car_seq_truck_num for oracle.seq_truck_num;
select sy_car_seq_truck_num.nextval from dual;
drop synonym sy_car_seq_truck_num;

2.6、package

包的同义词的创建与调用。

CREATE OR REPLACE PACKAGE pkg_a AS
FUNCTION f_test( f_a IN INTEGER , f_b IN INTEGER ) RETURN INTEGER;
PROCEDURE pro_test;
END pkg_a;
/
CREATE OR REPLACE PACKAGE BODY pkg_a AS
FUNCTION f_test( f_a IN INTEGER , f_b IN INTEGER )
RETURN INTEGER
AS
f_c INTEGER;
BEGIN 
f_c := f_a + f_b;
RETURN f_c;
END f_test;
PROCEDURE pro_test
AS 
a INTEGER;
BEGIN
a:= pkg_a.f_test(12,13);
RAISE NOTICE 'pkg_a.f_test(12,13) = %',a; 
END pro_test; 
END pkg_a;
/
-- 创建package同义词 
create synonym pkggg for pkg_a;
-- 测试调用函数/存储过程
DECLARE 
  a INTEGER;
BEGIN
  pkggg.pro_test();
  a:=pkggg.f_test(10,13);
  RAISE NOTICE 'a : %',a;
END;
/
drop synonym pkggg;
drop package pkg_a;

好了,至此关于Halo数据库同义词的功能就简单演示完毕了,如文中存在问题,欢迎指正,非常感谢!