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 06-01-2004
rqc rqc is offline
Miembro
 
Registrado: dic 2004
Ubicación: Peru
Posts: 10
Poder: 0
rqc Va por buen camino
Procedimientos almacenados VS UDF

tengo un procedimiento almacenado que me permite sacar el nombre de un cliente llamado: NombreCliente(Codigo) al cual le paso el codigo del cliente

Necesito efectuar una seleccion de la siguiente manera

select factura,NombreCliente(Codigo) from ventas

es posible esto en interbase , en otras palabras que el procedimiento almacenado se comporte como un UDF

De antemano agradesco las sugerencias a este problema

Robeto Quiroz Calle
Responder Con Cita
  #2  
Antiguo 07-01-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Hola.

Puedes hacer un JOIN con el procedimiento almacenado.

Código:
select factura, Cliente.Nombre
from ventas
     left outer join NombreCliente(Codigo) Cliente on 1 = 1
NOTA : El 1 = 1 solo se pone, porqué en un JOIN es obligatorio poner una condición, pero como el procedimiento ya devuelve unicamente el registro correcto, ponemos una condición cierta cualquiera para no tener un error de sintaxis.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).

Última edición por guillotmarc fecha: 07-01-2004 a las 12:11:27.
Responder Con Cita
  #3  
Antiguo 07-01-2004
rqc rqc is offline
Miembro
 
Registrado: dic 2004
Ubicación: Peru
Posts: 10
Poder: 0
rqc Va por buen camino
usando tu idea efectue la siguiente consulta

select v.ninterno,v.ineto,cliente.nombre
from pcventa v
left outer join NombreCliente(v.ccliente) Cliente on 1 = 1

y me envia el siguiente mensaje

columna does not belong to referenced table
Dinamic SQL error
SQl error code = -206
column unknown
CLIENTE

disculpa la molestia

Roberto Quiroz
Responder Con Cita
  #4  
Antiguo 07-01-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Hola.

Esto lo he probado con Firebird 1.03, y funciona bien. ¿ Que Interbase utilizas ?

Por cierto, no creo que sea el caso, pero pón igual las mayúsculas del alias cliente. En la definición del alias tienes la primera letra en mayúsculas, y en la designación del campo no.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #5  
Antiguo 08-01-2004
rqc rqc is offline
Miembro
 
Registrado: dic 2004
Ubicación: Peru
Posts: 10
Poder: 0
rqc Va por buen camino
Estoy utilizando Interbase 6.01, hice todas las modificaciones posibles y no funciona .
Voy a instalar Firebird 1.5 y te comunico como me fue

Gracias por tu ayuda

Roberto Quiroz
Responder Con Cita
  #6  
Antiguo 17-03-2004
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

¡Hola a todos!

He probado con Join en Firebird 1.5, y funciona.

Ahora mi pregunta es: ¿Esta es la manera más práctica de utilizar un procedimiento almacenado, dentro de una sentencia Select a manera de función UDF, para usar el valor (o los valores) que devuelve como columnas del conjunto de datos resultante?

Intento concentrar en un procedimiento almacenado, lo que de otra forma tendría que ser un sub-select directo y más largo de escribir.

Muchas gracias.

Al González .
Responder Con Cita
  #7  
Antiguo 18-03-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Puede ser correcta... aunque creo que tiene un impacto en el rendimiento de la BD (suponiendo que el optimizador ya esté trabajando mejor... ).

Yo utilizo un mecanismo similar en oracle... pero alli si existe el concepto de funcion almacenada, y realmente puede simplificar mucho las consultas.

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


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


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