Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-08-2007
rodrigo19 rodrigo19 is offline
Miembro
 
Registrado: may 2007
Posts: 30
Poder: 0
rodrigo19 Va por buen camino
Smile Procedimiento Almacenado

por favor necesito ayuda!!!
Responder Con Cita
  #2  
Antiguo 11-08-2007
Avatar de Vyckso
[Vyckso] Vyckso is offline
Miembro Premium
 
Registrado: may 2006
Ubicación: Madrid
Posts: 16
Poder: 0
Vyckso Va por buen camino
Prueba con una funcion

Hola

En vez de usar un procedimiento, que lo unico que hace es ejecutarse sin devolverte nada, deberias crear una función:

Código SQL [-]
Create or repalce function "Mifuncion" as
Begin
  (Codigo de la función)
  Result := Resultado;
End;
/

Esto en principio te devuelve un solo registro, creo, si no es asi por favor que me corrija alguien ya que me gustaria saber como, que las funciones no pueden devolver un grupo de registros.

En este caso puedes crearte un procedimiento que lo que haga es añadirte a una tabla temporal lo que necesitas y tirar de los registros de la tabla en cuestion

Salu2
__________________
Caminar sobre el agua y desarrollar software a partir de unas especificaciones es fácil, si ambas están congeladas.
Responder Con Cita
  #3  
Antiguo 11-08-2007
rodrigo19 rodrigo19 is offline
Miembro
 
Registrado: may 2007
Posts: 30
Poder: 0
rodrigo19 Va por buen camino
Smile Procedimiento Almacenado

Saludos a todos y espero que me puedan ayudar, el problema que tengo es que estoy trabajando con Oracle 9i y tengo un procedimiento almacenado que contiene el siguiente sql:

Código SQL [-]
Select CODIGO from CLIENTES
esta sentencia me deberia dar como resultado todos los codigos de todos los clientes pero a la hora de compilarlo me da un error; necesito todos los codigos para luego almacenar el resultado en un DataSet o un DataTable.

Si tienen alguna informacion que me pueda ayudar se los agradeceria mucho. Muchas Gracias.
Responder Con Cita
  #4  
Antiguo 11-08-2007
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
si no pones el codigo del procedimiento dudo mucho que alguien te pueda ayudar, las bolas de cristal estan escasas estos dias...
Responder Con Cita
  #5  
Antiguo 11-08-2007
rodrigo19 rodrigo19 is offline
Miembro
 
Registrado: may 2007
Posts: 30
Poder: 0
rodrigo19 Va por buen camino
Smile Procedimiento Almacenado

Este es el codigo del procedimiento almacenado
Código SQL [-]
CREATE OR REPLACE  PROCEDURE "USV09"."SELECCIONCODIGOS" 
    SELECT CODIGOS FROM CLIENTES;
 END SELECCIONCODIGOS;

pero no hace nada o no me da el resultado que quiero, que son todos los codigos de los clientes. Muchas Gracias.
Responder Con Cita
  #6  
Antiguo 22-08-2007
jr_ewing jr_ewing is offline
Registrado
 
Registrado: sep 2006
Posts: 5
Poder: 0
jr_ewing Va por buen camino
Usar REF CURSOR

Rodrigo, tendrías que hacer un procedimiento que utilice como parámetro de salida un REF CURSOR. Para eso te conviene generarte un package, o utilizar algun existente, en el que declares primero un TYPE genérico y público, más el procedimiento que va a tener algún parámetro de salida del nuevo tipo:

Código SQL [-]
Create or Replace package MY_PACK is
 
TYPE TCursor is REF CURSOR;
 
PROCEDURE SELECCIONCODIGOS(cCursor out TCursor);
 
END;

El BODY sería así:

Código SQL [-]
Create or Replace package body MY_PACK is
 
PROCEDURE SELECCIONCODIGOS(cCursor out TCursor) is
begin
  open cCursor for 
    select CODIGOS from CLIENTES;
end;
 
END;
/

Y después, en Delphi, te creas un TQuery (por ejemplo, QSelCod) con el sgte código en donde escribís el SQL:

Código Delphi [-]
begin
  MY_PACK.SELECCIONCODIGOS(:cCursor);
end;

Luego, desde la aplicación hacés el QSelCod.Open y listo.

Tené en cuenta que, dependiendo de la versión de Delphi que utilices, o si utilizás algun componente externo de conexión, tendrás que setear o no el parámetro. Si lo tenés que hacer, seleccioná tipo de dato Cursor y tipo de parámetro Output.

Suerte!
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
Procedimiento Almacenado egostar Firebird e Interbase 4 15-12-2006 02:04:07
Procedimiento Almacenado pichi Vignola Firebird e Interbase 2 17-08-2006 01:07:38
Procedimiento almacenado LucianoRey MS SQL Server 2 23-08-2005 00:37:06
Procedimiento Almacenado scooterjgm Conexión con bases de datos 5 18-01-2005 18:21:32
Procedimiento almacenado y Ado LucianoRey MS SQL Server 11 06-07-2004 22:55:23


La franja horaria es GMT +2. Ahora son las 17:59:57.


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