Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   ¿Es posible hacer una consulta de este tipo? (https://www.clubdelphi.com/foros/showthread.php?t=10515)

taote 21-05-2004 09:46:16

¿Es posible hacer una consulta de este tipo?
 
Hola:

¿Sabe alguien la manera de hacer en un procedimiento algo parecido a la siguiente consulta?

Código PHP:

CREATE PROCEDURE ULTIMOCODIGO (
    
CAMPO VARCHAR(20),
    
TABLA VARCHAR(20))
RETURNS (
    
CODIGO VARCHAR(10))
AS
begin
       select MAX
(:CAMPOfrom :TABLA into :CODIGO;
end 

es decir, insertar en la clausula FROM una tabla de la que solo se el identificador de su nombre. El código de arriba no me lo permite.

Gracias por adelantado.

jachguate 22-05-2004 03:04:43

Ninguno de los SGDB's que conozco permite enviar en un parámetro el nombre de la tabla. Sin embargo, algunso motores si permiten dentro de un Stored Procedure la ejecución de SQL dinámico, es decir, sentencias construidas "al vuelo". Eso si, la implementación en cada uno es diferente.

Dado que no indicas el motor con el que trabajas, hasta alli puedo dejarte.

Hasta luego.

;)

__cadetill 22-05-2004 10:23:48

no indicas el motor, como bien dice Juan Antonio, pero si es Firebird 1.5, te recomiendo la lectura de este hilo

PD: en lugar de usar la etiqueta PHP, podrías haber usado la SQL ;)

taote 24-05-2004 08:53:27

Perfecto. Sí, es con Firebird 1.5 así que me funciona esta característica, es la que necesitaba. Gracias y la próxima vez ya encerraré el código en el bloque correcto :o

A propósito, ¿que diferencia hay entre incluir o no el suspend al final de un procedimiento?

__cadetill 24-05-2004 09:41:40

Cita:

Empezado por taote
A propósito, ¿que diferencia hay entre incluir o no el suspend al final de un procedimiento?

Si no voy errado, sin el suspend no se devolvería ningún valor

guillotmarc 24-05-2004 11:06:13

Hola.

El suspend se utiliza para devolver el resultado del procedimiento almacenado como un dataset, es decir que lo tienes que utilizar si el procedimiento almacenado va a devolver más de un registro. Se tiene que llamar para cada uno de los registros a devolver.

En este caso no hace falta el suspend, puesto que el valor devuelto, lo recogemos en el parámetro de salida, y no en un dataset, en cuyo caso lo leeriamos de esta forma :

select CODIGO from ULTIMO_CODIGO('ID', 'CLIENTES')

Saludos.


La franja horaria es GMT +2. Ahora son las 09:55: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