25/11/2004, 17:25
|
| | | Fecha de Ingreso: diciembre-2003 Ubicación: Nuevo Laredo, Tamaulipas
Mensajes: 32
Antigüedad: 21 años Puntos: 0 | |
Hola, tengo algunos años ya trabajando con el firebird por lo que creo que te puedo ayudar.
La idea basica de tu procedimiento almacenado es correcta, pero lo que te falta es complementar un poco la sintaxis. Para empezar en cada sentencia SELECT debes especificar la lista de campos a traer porque cada uno debes guardarlo en parametros de salida o variables; para ilustrar un poco mas esto vamos a ver un ejemplo tomando como base el que planteaste.
Supongamos que tienes la tabla CLIENTES con la siguiente estructura:
NUMERO INTEGER
NOMBRE VARCHAR(100)
DIRECCION VARCHAR(50)
TELEFONO VARCHAR(20)
y quieres un procedimiento almacenado que te devuelva todos los campos sin mas condiciones; la declaracion seria asi:
CREATE PROCEDURE PROC_CLIENTES
RETURNS(
NUM INTEGER,
NOMBRE VARCHAR(100),
DIR VARCHAR(50),
TEL VARCHAR(20)
)
AS
BEGIN
FOR SELECT NUMERO, NOMBRE, DIRECCION, TELEFONO
FROM CLIENTES
INTO :NUM, :NOMBRE, :DIR, :TEL
DO
SUSPEND;
END
Intencionalmente a algunos de los parametros de salida los llame con nombres diferentes a los de la estructura para que vieras que en ellos se guardaron los valores que devolvio el SELECT. Tambien debes notar que se incluyo un FOR antes del SELECT, esto es porque quieres hacer un recorrido por todo el conjunto de resultados del SELECT, y en este ejemplo lo unico que hacemos es ejecutar la instruccion SUSPEND la cual se encarga de devolver un renglon con los valores que tengan en ese momento los parametros de salida.
Bueno, espero haber podido resolver un poco tu duda.
Saludos.
__________________ No hagas a los demas lo que no quieras que te hagan. |