Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-04-2008
Avatar de SpyO_O
SpyO_O SpyO_O is offline
Miembro
 
Registrado: may 2003
Ubicación: Argentina
Posts: 22
Poder: 0
SpyO_O Va por buen camino
Question Firebird to Oracle

Hola a todos , estoy intentando mover firebird a oracle, todo a salido muy bien, Datos,estructuras, triggers.
el problema llego cuando intente mover un procedimiento almacenado. no encuntro manera de hacerlo en PL/SQL ,


el prodimiento en firebird es el siguiente:

create PROCEDURE Demo1(vLike varchar(15))
returns(vName Varchar(60),vMat Integer,c integer)

AS

BEGIN
c=0;
for Select Nome,Mat from TB_per tr
where tr.nome like '%'||:vLike||'%'
into :vName,:vMat do
begin
if Vname='Pedro' then
c=c+1;
suspend;
end
END
yo no encuentro manera de hacerlo en oracle , alguien puede ayudarme por favor?
__________________
Q Onda?
Responder Con Cita
  #2  
Antiguo 10-04-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Podrías lograrlo con una variable almacenada en un package. Lamentablemente ahora no tengo tiempo para hacerte un dommy... pero te dejo la idea.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 10-04-2008
Avatar de SpyO_O
SpyO_O SpyO_O is offline
Miembro
 
Registrado: may 2003
Ubicación: Argentina
Posts: 22
Poder: 0
SpyO_O Va por buen camino
Firebird to Oracle

Gracias por responder, entiendo perfectamente lo que me acabas de decir, de echo llevo muchos años programando en PL/SQL pero esta particularidad de firebird no logro implemnetarla en oracle.

el ejemplo que puse en el mensaje anterior es un simple ejemplo donde incrementa el valor de la variable en caso de que se cumpla una condcion.
pero en un procedimento comun de firebird se escriben algoritmo realmente complejos.

A lo que voy yo, es a lograr una salida como la que realiza firebird hoy
haciendo
Código SQL [-]
Select * from AnyStoreProcedure(...)

Creo que esto es imposible desde oracle o existe alguna otra alternativa viable ??
eh itentado usar refcursor, pero de igual modo no puedo filtrar los datos con un "where " como lo hace firebird al resultado del store procedure.
ni tampoco puedo usar los parametros Returns de oracle como parte del cursor.

Gracias.
__________________
Q Onda?
Responder Con Cita
  #4  
Antiguo 10-04-2008
Avatar de RolphyReyes
RolphyReyes RolphyReyes is offline
Miembro
 
Registrado: ago 2004
Ubicación: Santo Domingo
Posts: 285
Poder: 20
RolphyReyes Va por buen camino
Lightbulb

Saludos.

Soy nuevo en esto de Oracle pero nosotros acá en la empresa utilizamos D2007, Oracle 10 y nos conectamos con dbExpress, esto es parte de un procedimiento:

Código SQL [-]
create or replace procedure STORED_PROCEDURE
(  V_NUMERO IN NUMBER DEFAULT NULL,
   CV_1 IN OUT SYS_REFCURSOR) is
begin
   OPEN CV_1 FOR
        SELECT *
        FROM VIEW 
        WHERE NUMERO = NVL(V_NUMERO, 0)
        AND CAMPO2 IN (1, 2 ,3)
        ORDER BY CAMPO1, CAMPO2;
  
end;

El VIEW es tu sentencia de SELECT estandard y el procedimiento nos sirve para filtrar la data según el usuario.

La sentencia para llamarlo como FireBird (select * from procedimiento) realmente no la manejo pero nosotros utilizamos el componente de stored procedure de dbExpress y lo conectamos a un ClientDataSet vía el Provider y solo hacemos ClientDataSet.Open (si lleva parámetros se lo enviamos). Ya el ClientDataSet sabe que hacer.

Hasta luego.
__________________
Gracias,
Rolphy Reyes
Responder Con Cita
  #5  
Antiguo 10-04-2008
Avatar de SpyO_O
SpyO_O SpyO_O is offline
Miembro
 
Registrado: may 2003
Ubicación: Argentina
Posts: 22
Poder: 0
SpyO_O Va por buen camino
gracias por tu respuesta, efectivamente eso lo eh probado ya , pero lamentablemente "se queda corto" es decir no alcanza a cubrir todas las caracteriticas de un select sobre un procedimiento alamacenado como lo hace firebird.
gracias.,

PD: Santo domingo es un bonito lugar, como me gustaria estar ahi ahora jajaj
Saludos
__________________
Q Onda?

Última edición por SpyO_O fecha: 10-04-2008 a las 22:46:19. Razón: agregue un post data
Responder Con Cita
  #6  
Antiguo 11-04-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Hola.

Efectivamente, en oracle no hay tal cosa como los procedimientos de selección, que en mi experiencia, he visto solamente en IB/FB.

Para el caso concreto de incrementar un valor en función a un dato del resultado, se me ocurría que puede usarse un package, de manera que, a nivel de sesión pueda tenerse un valor que pueda "recordarse", e incrementarlo cuando sea necesario mediante la llamada a una función que pueda invocarse desde el propio select.

Es algo que nunca he intentado... pero podría funcionar.

Hasta luego

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #7  
Antiguo 11-04-2008
rcm861 rcm861 is offline
Miembro
 
Registrado: mar 2008
Posts: 58
Poder: 17
rcm861 Va por buen camino
Se que no es la respuesta que esperas pero espero te sirva.

Si lo que quieres es estar cerca de Oracle porque no pruebas con Fyracol que no es otra cosa que Firebird con syntaxis Oracle.

Pero ampliaciones que requieren de oracle pueden utilizar esta base de datos sin problemas.

Salidos
Ramiro
Responder Con Cita
  #8  
Antiguo 11-04-2008
Avatar de SpyO_O
SpyO_O SpyO_O is offline
Miembro
 
Registrado: may 2003
Ubicación: Argentina
Posts: 22
Poder: 0
SpyO_O Va por buen camino
Smile

Cita:
Empezado por rcm861 Ver Mensaje
Se que no es la respuesta que esperas pero espero te sirva.

Si lo que quieres es estar cerca de Oracle porque no pruebas con Fyracol que no es otra cosa que Firebird con syntaxis Oracle.

Pero ampliaciones que requieren de oracle pueden utilizar esta base de datos sin problemas.

Salidos
Ramiro
Hola ramiro, creo que a lo que te refieres es a Fyracle , si es ese, lo eh mirado pero no es lo que busco, muchas gracias de todos modos.

Esa forma particual de trabajar que tiene firebird sobre los procedimentos almacenados es unica y es causa de la mayor incompatibilidad al intentar pasarse a oracle u a otra base de datos.

Ahora si lo que se necesita es pasarce de oracle a firebird el trabajo es mucho mas sencillo.

Gracias.
__________________
Q Onda?
Responder Con Cita
  #9  
Antiguo 11-04-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cita:
Empezado por SpyO_O Ver Mensaje
Ahora si lo que se necesita es pasarce de oracle a firebird el trabajo es mucho mas sencillo.
No puedo estar de acuerdo con esto!
¿Cómo implementarías en Firebird un package que guarde información de estado de la sesión?
¿Cómo implementarías las funciones?
¿Cómo implementarías las vistas materializadas?
¿Cómo implementarías la replicación simétrica?

¡Y mil cosas mas!

Creo que migrar una estructura de una base de datos a otra es fácil o difícil en la medida que dicha estructura/diseño es complejo y explota las características únicas de cada base de datos. De las que conozco, la mas apegada al estándar y la mas fácil de mover entre bases de datos es precisamente Firebird.

Si la migración entre bases de datos es algo que se hará una sola vez llega el momento en que tenes que dejar algunas cosas atrás y pensar en función de las características de la base de datos de destino, armar una nueva solución para el problema particular que resolvía lo que no se pudo migrar y hacer los cambios que haga falta en la aplicación.

Si, por el contrario, lo que se pretende es soportar varias bases de datos al mismo tiempo, hay que tener esta compatibilidad en mente desde el diseño original, o introducirla cuando se toma la decisión de soportarlas. Para esto, no hay de otra, hay que sacar el mínimo común de todas las bases que se pretende soportar, y trabajar con esto.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #10  
Antiguo 11-04-2008
Avatar de SpyO_O
SpyO_O SpyO_O is offline
Miembro
 
Registrado: may 2003
Ubicación: Argentina
Posts: 22
Poder: 0
SpyO_O Va por buen camino
Oracle sin duda tienen infinitas opciones, tanto de configuracion y desarrolo, yo podria ampliar tu lista rapidamente en 10 items mas y 1000 si me pongo a ver en mas detalles .

El comun de los programadores usan funciones y procedimentos, tambien pueden usar packages para agrupararas a todas y usar el concepto de "sesion" en el paquete, es cierto firebird no tiene esa posibilidad, pero puedo apostar que adaptar un paquete a procedimientos de firebird es menos costoso que a la inversa. seguramnete sacrifando algunas posibilidades es posible llegar a un modelo similar.

yo llegue a la conclusion de que es imposible portar varios procedimientos almacenados que dispongo a oracle , hacerlo implicaria una complejidad enorme en la logica de la programacion y en el resultado del codigo fuente. Por lo que estoy totalmente de acuerdo con vos en que hay que dejar algunas cosas atras y pensar con un nuevo paradigma.

Saludos
__________________
Q Onda?
Responder Con Cita
  #11  
Antiguo 15-04-2008
Avatar de SpyO_O
SpyO_O SpyO_O is offline
Miembro
 
Registrado: may 2003
Ubicación: Argentina
Posts: 22
Poder: 0
SpyO_O Va por buen camino
Smile firebird to oracle

Hola,
luego de tanto buscar, encontre la manera de como lograr hacer select sobre store procedure en oracle de igual manera como se hace en firebird/interbase.

pues el tema es relativamente sencillo, no me voy a poner a explcarlo teniendo un site que lo explica muy bien.
http://www.akadia.com/services/ora_pipe_functions.html
lo probe con mis procedimientos y funciona perfectamente.

Muchas gracias a todos los que respondieron y se interesaron.
un abraso
pedro
__________________
Q Onda?
Responder Con Cita
  #12  
Antiguo 15-04-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Vaya... que interesante... es algo que no le conocía a Oracle..

Gracias por compartir la info.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
micracion firebird 1.5 a oracle 10g ASAPLTDA Oracle 2 11-04-2008 08:10:02
FYRACLE Firebird mode ORACLE ASAPLTDA Firebird e Interbase 1 05-08-2005 17:43:01
exportar una tabla de oracle 9i a paradox o firebird ARCON Oracle 1 28-10-2004 10:38:22
Migracion de Firebird a Oracle SCORDOBA Oracle 1 14-06-2004 21:51:27


La franja horaria es GMT +2. Ahora son las 00:17:05.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi