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
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 13:32:32.


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