gpt4 book ai didi

oracle - 函数返回表正在创建公共(public)变量

转载 作者:行者123 更新时间:2023-12-05 07:53:07 24 4
gpt4 key购买 nike

我正在从一个函数中返回一个表首先,我正在创建一个新的对象类型,其中包含将要返回的字段

create or replace type t_col as object (
i number,
n varchar2(30)
);

然后我创建一个嵌套表:

create or replace type t_nested_table as table of t_col;

然后我创建了一个返回表的函数

create or replace function return_table return t_nested_table as
v_ret t_nested_table:= t_nested_table();

begin

v_ret.extend;
v_ret(v_ret.count) := t_col(1, 'one');

v_ret.extend;
v_ret(v_ret.count) := t_col(2, 'two');

v_ret.extend;
v_ret(v_ret.count) := t_col(3, 'three');

return v_ret;
end return_table;

问题是当我在函数中使用以下行在函数中创建类型为 t_nested_table 的对象时

v_ret t_nested_table:= t_nested_table();

它正在创建一个像 SYSTPIeQAK45TO9TgUywLAQqu+g== 这样具有公共(public)访问权限的对象,其他模式用户可以访问该对象,是否有任何方法可以将它们设为私有(private)。

最佳答案

is there any way to make them private

实现这一目标的唯一方法是:

  • 创建
  • 将函数包装在包中
  • 包体中而不是在规范中进行私有(private)声明
  • 使用RECORD 类型而不是对象类型。对象类型存储在数据库中。

来自 documentation ,

The body holds implementation details and private declarations, which are hidden from code outside the package. Following the declarative part of the package body is the optional initialization part, which holds statements that initialize package variables and do any other one-time setup steps.

关于oracle - 函数返回表正在创建公共(public)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33095839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com