Clases en oracle

Te felicito por tu aporte a la investigación, y te comparto una duda que tengo, quiero crear clases en la base de Datos Oracle 8i y utilizarlas en llamadas de procedimientos.
1

1 Respuesta

2.125 pts. Conozco de Administración de Oracle 8i, desarrollo en...
Haré el intento. La respuesta puede ser bastante extensa, así que trataré de ser lo más conciso posible.
Bueno, la literatura en C++ trata el paradigma de los objetos con los nominativos clases, refiriéndose al tipo de datos y objeto, al que se hace variable en memoria. Oracle, en su literatura técnica trata dicho paradigma con la relación binomio objeto-objeto instanciado para referirse a los mismo.
Es simple. La sintaxis SQL que resuelve es la siguiente:
CREATE OR REPLACE TYPE typename AS OBJECT (lista_atributos,
[lista_métodos]);
Así se define el objeto, fíjate bien que es un tipo de datos, su tratamiento es similar al de cualquier otro. La diferencia estriba en que encapsula atributos, o sea, variables, con métodos, es decir, funciones o procedimientos que actúan sobre esos atributos. La sentencia SQL que los trata debe tener esto en cuenta, cualificando entonces el llamado a una variable miembro del objeto instanciado o de un método, como sigue:
object_name.method or
object_name.attribute
Hasta aquí, todo ok. Una vez declarado el tipo de dato objeto, si tiene métodos, estos hay que definirlos. Entones, se usa la siguiente sintaxis:
CREATE OR REPLACE TYPE BODY object_name AS
MEMBER FUNCTION function_name,
...
Por supuesto, los objetos se inicializan. Existen unos métodos especiales llamados constructores, que se nombran con el mismo nominativo del tipo de datos. Por ejemplo: si el objeto se llama Student, entones la función miembro que actuará de constructor se llamará Student. Esta función retornará el tipo de datos Student, en este caso.
Hay toda una teoría al respecto. Existen miemros estáticos, que incluso pueden ser utilizados como inicializadores de onjetos que están siendo instanciados, el puntero self, que no es más que un puntero al objeto instanciado para poder resolver nombres y la unicidad del objeto instanciado en tiempo de ejecución.
Pero eso es casi un libro. Puedo sugerirte literatura.
"Oracle 8i Advanced PL/SQL Programming", de Scott Urman, libro muy útil e interesante, que trata objetos, pero no solo eso, sino también Java en Oracle, SQL dinámico, etc.
Espero que te haya ayudado aunque sea un poco. Un placer responder.
Ahora vendría la parte de cómo instanciar ese objeto, o sea, cómo hacerlo persistente.
Existen dos maneras para hacer los objetos instanciados persistentes: se guardan por filas o se guardan por columnas.
Por ejemplo, suponiendo que tengo un objeto que se llama Polygon, entonces, guardarlo como columna sería:
Create table shapes(
key number primary key,
shape_type varchar2(20),
shape Polygon);
Como fila sería:
Create table students of Student;
Asumiendo que tengo un objeto de nombre Student.
Te agradezco tu información ha sido muy buena, pero creo que no me explique, lo que en realidad quería saber es como crear clases java en orcle y como se accede a estas desde store procedures
Otra vez gracias
Ahora cambia un poco la cuestión. En esta parte tengo menos experiencia, pero podré darte una luz para que comiences.
Mira, los pasos clásicos son:
- Codificar la rutina en java.
- Cargarla a la db
- Hacer el procediemitno envoltorio PL/SQL que se usará para invocar la clase.
Bueno, codificarla es cosa de programadores Java, así que no me detngo en eso.
Cargarla: existen dos maneras, bien distintas una de otra. La primera es usar un utilitario de comandos llamado loadjava. No me detendré en ese, la documentación está disponible. Mejor la sentencia SQL CREATE JAVA, que permite lo mismo. La sintaxis:
CREATE [OR REPLACE] [AND {RESOLVE|COMPILE}[NOFORCE] JAVA {{SOURCE|RESORCE} NAMED primary_name | CLASS [invoker_rights_clause]
[RESOLVER resolver_clause]
{AS source_text |USING lob_clause}
Te escribo unos ejemplos, te será mucho más clara la sintaxis:
create or replace directory ch10 as
'/home/surman/book/code/ch10';
create or replace and resolve java source named "DateUtils"
using bfile (ch10, 'DateUtils.java');
create or replace and resolve java source
named "GetString" as
{
public static void main (String args[])
throws java.text.ParseException
{
System.out.println(Current..." + DateUtils.getFormatString());
}
};
El directorio es para situar en la db un objeto que haga referencia a la posición del disco duro donde se encuentra la clase de java que se desea cargar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas