如何将对象声明为私有

时间:2015-10-07 07:41:56

标签: oracle plsql oracle10g

我使用以下代码创建对象

CREATE OR REPLACE TYPE sales_object IS OBJECT (
  dates DATE, 
  product_id VARCHAR2(20), 
  product_name VARCHAR2(50), 
  sale DECIMAL(15,2)
);

我用来创建一个包含以下代码的表

CREATE OR REPLACE TYPE year_sales_tab IS TABLE OF sales_object;

现在这个表正用于存储和返回网格的函数中。

如果有任何方法可以将 sales_object 创建为私有?

1 个答案:

答案 0 :(得分:0)

  

如果有任何方法可以将sales_object创建为私有?

是。

不是将类型sales_object创建为 OBJECT ,而是在中将其设置为 RECORD ,并在代码中使用它。当您创建为对象时,它将存储在数据库中,而如果您创建为记录,则只能在您的代码中使用它而不是其他地方。

TYPE sales_object
IS
  RECORD
  (
    DATES        DATE,
    PRODUCT_ID   VARCHAR2(20),
    PRODUCT_NAME VARCHAR2(50),
    sale         DECIMAL(15,2) 
  );

更新 OP实际上是在谈论特权。

您可以通过记录您希望获得权限的用户来创建类型,只需要当前用户拥有所有者权限,而其他用户无法访问该对象。

如果您打算向特定用户授予权限,那么

GRANT EXECUTE ON "USER"."TYPENAME" TO "OTHER_USER";