是否可以在PL/SQL中创建Oracle数据库对象类型?
是否可以在Oracle Database 10g中的包内创建对象类型?比如:是否可以在PL/SQL中创建Oracle数据库对象类型?,oracle,plsql,Oracle,Plsql,是否可以在Oracle Database 10g中的包内创建对象类型?比如: create or replace package my_package as type my_type as object ( id number(15) ); end; 给出: 错误(3,9):PLS-00540:此上下文中不支持对象 我最终希望能够做到的是使用多态性,但也允许对象访问表并使用PL/SQL,这在包外定义的类型中是不允许的 谢谢, 杰夫来自: 当前,无法定义对
create or replace package my_package as
type my_type as object (
id number(15)
);
end;
给出:
错误(3,9):PLS-00540:此上下文中不支持对象
我最终希望能够做到的是使用多态性,但也允许对象访问表并使用PL/SQL,这在包外定义的类型中是不允许的
谢谢,
杰夫来自:
当前,无法定义对象
PL/SQL块、子程序中的类型,
或者包裹
因此,不幸的是,没有。您可以在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;
/
从以下链接复制粘贴此示例:Oracle 11g第2版更新: 自: 在PL/SQL块、子程序或包中使用对象类型需要两个步骤
是的,只是增加了错误。谢谢。这在oracle 11.2中仍然不起作用。。。。这在Pascal和ADA(pl/sql的祖先)中都是可能的;所以我想我们会很快到达目的地,确实不能在PL/SQL中定义对象类型,但可以在PL/SQL之外定义的对象体中使用PL/SQL。jlpp做出了错误的假设。最初的问题是关于在包内“创建”对象。您的回答是关于“使用”plsql块/包中的对象。。。这是非常不同的话题。我知道它已经9岁了,但伙计,这并不能解决问题。