如何创建一个 Oracle 全局类型并在 PL/SQL 中使用它?
Posted
技术标签:
【中文标题】如何创建一个 Oracle 全局类型并在 PL/SQL 中使用它?【英文标题】:How to create a Oracle global type and use it in PL/SQL? 【发布时间】:2012-10-08 10:07:14 【问题描述】:在过程或函数中声明的 Oracle RECORD TYPE 是本地的,因此只能在本地使用。如何声明一个全局的 RECORD TYPE 并且可以在 DB 中全局的所有过程和函数中使用?
【问题讨论】:
最好选择一个位置发布问题。这是在 DBA.SE 上交叉发布的——dba.stackexchange.com/questions/25597/… 【参考方案1】:Record
类型不能作为单独的模式对象创建,因此要使 Record
类型公开可用,该类型通常在包规范中声明,或者包主体仅在该包的范围内可用.
【讨论】:
@centurion :如果你想要一个记录类型,创建一个记录的数据库对象类型,然后创建一个对象类型的嵌套表。然后你就可以在你的包。【参考方案2】:在包中使用对象类型的基本示例。
CREATE OR REPLACE TYPE test_rec IS OBJECT
(
ID VARCHAR2(30)
,TYPE VARCHAR2(30)
);
/
CREATE OR REPLACE TYPE test_NT AS TABLE OF test_rec;
/
declare
v_test_NT test_NT;
begin
select test_rec (id
,type
)
BULK COLLECT INTO v_test_NT
FROM test ;
--use it as you want
end;
【讨论】:
谢谢。这不完全是我希望找到的:) 因为它涉及创建或嵌套表并遍历集合,即使只有一条记录。使用 pl/sql 记录类型时,您只需创建一个类型并使用它。 对不起,上面的例子是错误的。您不能像这样在 PACKAGE 中使用对象。好吧,只需编译并查看错误。您的示例在包外运行良好,但在包中却不行。 @Petar:你能分享一下你的制作包吗?因为我没有遇到任何编译问题以上是关于如何创建一个 Oracle 全局类型并在 PL/SQL 中使用它?的主要内容,如果未能解决你的问题,请参考以下文章
JQuery 插件,Javascript - 如何仅为 JQuery 插件全局变量或 json 对象创建并在函数级别更改此(变量、对象)