Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Possible to create Oracle Database object types inside of PL/SQL?

Tags:

Is it possible to create an object type inside of a package in Oracle Database 10g? Something like:

create or replace package my_package as      type my_type as object (         id number(15)       );  end; 

Gives:

Error(3,9): PLS-00540: object not supported in this context.

What I'm ultimately looking to be able to do is use polymorphism but also allow the objects to access tables and use PL/SQL, which isn't allowed in types defined outside of packages.

Thanks, Jeff

like image 330
jlpp Avatar asked Jul 01 '09 13:07

jlpp


2 Answers

From the Oracle 10g documentation:

Currently, you cannot define object types in a PL/SQL block, subprogram, or package.

So, unfortunately, no.

like image 148
l0b0 Avatar answered Oct 02 '22 08:10

l0b0


Update for Oracle 11g Release 2:

From Chapter 3 Using PL/SQL With Object Types of Oracle Database Object-Relational Developer's Guide:

Using object types in a PL/SQL block, subprogram, or package is a two-step process.

  1. You must define object types using the SQL statement CREATE TYPE, in SQL*Plus or other similar programs.

    After an object type is defined and installed in the schema, you can use it in any PL/SQL block, subprogram, or package.

  2. In PL/SQL, you then declare a variable whose data type is the user-defined type or ADT that you just defined.

like image 26
user272735 Avatar answered Oct 02 '22 08:10

user272735