Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Problemas con Procedimientos Almacenados

Estas en el tema de Problemas con Procedimientos Almacenados en el foro de Bases de Datos General en Foros del Web. Hola amigos del foro. Estoy empezando un proyecto en la escuela. Es un aplicacion en c++ builder que usa una base de datos de firebird. ...
  #1 (permalink)  
Antiguo 25/11/2004, 11:06
 
Fecha de Ingreso: agosto-2004
Mensajes: 48
Antigüedad: 19 años, 8 meses
Puntos: 0
Pregunta Problemas con Procedimientos Almacenados

Hola amigos del foro.
Estoy empezando un proyecto en la escuela. Es un aplicacion en c++ builder que usa una base de datos de firebird.
Mi problema es que no manejo bien la sintaxis de los procedimientos almacenados en este motor de datos.
No puedo compilar una procedimiento que simplemente me devuelva una consulta como por ejemplo:

CREATE PROCEDURE MI_PROCEDIMIENTO
AS
BEGIN
SELECT * FROM TABLA;
SUSPEND;
END

Alguien tiene una idea de esto?
Saludos!!
  #2 (permalink)  
Antiguo 25/11/2004, 17:25
Avatar de hpvalle  
Fecha de Ingreso: diciembre-2003
Ubicación: Nuevo Laredo, Tamaulipas
Mensajes: 32
Antigüedad: 20 años, 4 meses
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.
  #3 (permalink)  
Antiguo 13/10/2005, 14:25
 
Fecha de Ingreso: octubre-2005
Mensajes: 1
Antigüedad: 18 años, 6 meses
Puntos: 0
De acuerdo procedimientos almacenados en firebird

Hola buenas tardes tengo poco tiempo trabajando con bases de datos pero si me gustaria saber como funcionan en si los procedimentos almacenados, para que se pueden utilizar, y si existe algun manula sobre esto o alguna referencia para firebird y los procedimientos almacenados


Gracias y buen dia
  #4 (permalink)  
Antiguo 17/10/2005, 10:47
Avatar de hpvalle  
Fecha de Ingreso: diciembre-2003
Ubicación: Nuevo Laredo, Tamaulipas
Mensajes: 32
Antigüedad: 20 años, 4 meses
Puntos: 0
Hola, mira los procedimientos almacenados son rutinas que se programan en una base de datos y solo puede utilizar elementos contenidos en ella, tales como tablas u otros procedimientos almacenados.

Esas rutinas pueden consistir en operaciones como insercion, actualizacion, eliminacion o consulta de registros mediante instrucciones SQL; tambien puedes recibir y devolver parametros, puedes hacer ciclos, evaluar condiciones y utilizar variables, en fin, son una herramienta muy util para hacer aplicaciones robustas.

El ejemplo clasico que te podria dar de un procedimiento almacenado es elaborar un reporte, ya que por lo general los reportes involucran consulta de mas de una tabla, ademas de evaluar o procesar los datos obtenidos en cada renglon, de manera que la aplicacion no tenga que hacer estos procesos y reciba toda la informacion lista para mostrarse.

Firebird es un manejador de bases de datos SQL muy robusto y potente, ademas que es libre de licencia, por lo que cada vez es mas popular y por eso encontrar documentacion ya no es problema.

Aqui te recomiendo un sitio donde hay documentacion en español:
http://firebird.sourceforge.net/manual/es/
__________________
No hagas a los demas lo que no quieras que te hagan.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:42.