与PostgreSQL中的Oracle包相同的是什么

时间:2016-01-27 17:20:28

标签: postgresql package

我对PostgreSQL很陌生,我想知道这样的事情是否存在......

我看到了一些讨论,但没有具体的......

谢谢!

2 个答案:

答案 0 :(得分:5)

不,没有等价物。

唯一远程类似的事情是为每个"包创建一个模式"并将一个包的所有功能放入该模式中。这样你至少可以得到包给你的命名空间。

这当然不会给你包私有函数或包广泛变量。

答案 1 :(得分:0)

如在postgresql之前所写,没有软件包。

带有名称空间的示例。可以将其放在单个 sql 文件中。

可以类似地添加其他方法。

--drop function if exists pack_exmpl.get_name(bigint);
--drop function if exists pack_exmpl.get_abbr(bigint);    
--drop schema if exists pack_exmpl;

drop schema if exists pack_exmpl cascade;
create schema pack_exmpl;

create or replace function pack_exmpl.get_name(p_id bigint)
returns varchar as $$
declare
  l_retval varchar;
begin
   select name into l_retval from example_table where id = p_id;
   return l_retval;
end;
$$ language plpgsql IMMUTABLE;

create or replace function pack_exmpl.get_abbr(p_id bigint)
returns varchar as $$
declare
  l_retval varchar;
begin
  select abbr into l_retval from example_table where id = p_id;
  return l_retval;
end;
$$ language plpgsql IMMUTABLE;