是否可以在Oracle Database 10g中的包内创建对象类型?就像是:
create or replace package my_package as
type my_type as object (
id number(15)
);
end;
Run Code Online (Sandbox Code Playgroud)
得到:
错误(3,9):PLS-00540:此上下文中不支持该对象.
我最终希望能够做的是使用多态,但也允许对象访问表并使用PL/SQL,这在包外定义的类型中是不允许的.
谢谢,杰夫
Oracle 11g第2版的更新:
从第3章到使用PL/SQL与Oracle数据库对象类型的对象类型- 关系开发人员指南:
在PL/SQL块,子程序或包中使用对象类型分为两步.
您必须使用SQL语句CREATE TYPE,SQL*Plus或其他类似程序来定义对象类型.
在模式中定义并安装对象类型后,可以在任何PL/SQL块,子程序或包中使用它.
在PL/SQL中,然后声明一个变量,其数据类型是您刚刚定义的用户定义类型或ADT.
您可以在PL/SQL包之外定义的对象中使用PL/SQL!使用对象体:
CREATE TYPE person_typ AS OBJECT (
idno NUMBER,
first_name VARCHAR2(20),
last_name VARCHAR2(25),
email VARCHAR2(25),
phone VARCHAR2(20),
MAP MEMBER FUNCTION get_idno RETURN NUMBER,
MEMBER PROCEDURE display_details ( SELF IN OUT NOCOPY person_typ ));
/
CREATE TYPE BODY person_typ AS
MAP MEMBER FUNCTION get_idno RETURN NUMBER IS
BEGIN
RETURN idno;
END;
MEMBER PROCEDURE display_details ( SELF IN OUT NOCOPY person_typ ) IS
BEGIN
-- use the PUT_LINE procedure of the DBMS_OUTPUT package to display details
DBMS_OUTPUT.PUT_LINE(TO_CHAR(idno) || ' ' || first_name || ' ' || last_name);
DBMS_OUTPUT.PUT_LINE(email || ' ' || phone);
END;
END;
/
Run Code Online (Sandbox Code Playgroud)
从以下链接复制粘贴此示例:http://www.mcs.csueastbay.edu/support/oracle/doc/10.2/appdev.102/b14260/adobjint.htm
| 归档时间: |
|
| 查看次数: |
43365 次 |
| 最近记录: |