Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Procedimientos almacenados VS UDF (https://www.clubdelphi.com/foros/showthread.php?t=6396)

rqc 06-01-2004 17:12:07

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

guillotmarc 07-01-2004 12:09:24

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.

rqc 07-01-2004 15:56:00

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

guillotmarc 07-01-2004 17:49:10

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.

rqc 08-01-2004 03:23:44

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

Al González 17-03-2004 23:26:01

¡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 :).

jachguate 18-03-2004 01:29:46

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.

;)


La franja horaria es GMT +2. Ahora son las 18:40:46.

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