![]() |
Enviar parametros desde Delphi a Storage Procedures en BD Firebird
Buen día.
DESCRIPCIÓN: Tengo una base de datos que contiene múltiples tablas, algunas de éstas a su vez tienen dependencia de otras. He creado varios procedimientos almacenados para ejecutar acciones desde ahi, como la inserción de la información a las tablas o el borrado de registros. Éstos procedimientos dependen de recibir ciertos valores para realizar las acciones según en base a ello. He podido ejecutar procedimientos desde Delphi que he creado para armar algunas consultas en base a varias tablas pero sin enviar parametros de por medio. Ahi es donde radica mi problema: PROBLEMA: Necesito ejecutar un procedimiento pero enviandole parametros de por medio. Alguien sabe como hacerlo. Quizas mi duda sea muy simple pero agradecería la ayuda. Gracias y espero su respuesta. Estoy utilizando los componentes: IBDatabase, IBDataset e IBTransaction para trabajar con la BD. |
Cita:
Hasta luego. ;) |
Más detallado
Como lo habia comentado, ya he podido ejecutar procedimientos almacenados en la BD ytilizando precisamente el componente TIBStoredProc. pero el problema radica en que no conozco como escribir la sentencia que hará tal situación.
Por ejemplo: El procedimiento se llama InsertCliente(nomb, dir, tel, email) y para llamarlo solo lo selecciono en el componente TIBStoreProc y lo activo en tiempo de ejecución para que no marque problemas. Pero para enviarle los parametros es ¿igual que cuando asigno valores a variables en un SQL normal? como pro ejemplo:
Perdón por escribirlo asi pero esque no tengo el Delphi a la mano en este momento. Gracias de antemano.:) |
Al soltar un TIBStoredProc en tu forma o módulo de datos, asocialo a una base de datos y una transacción, luego estableces su propiedad StoredProcName correctamente, y en la propiedad Params tenes los parámetros, tanto en tiempo de diseño como de ejecución.
Hasta luego. ;) |
Duda sobre firebird embedded
No me afectaría el tener que desinstalar el firebird que ya tengo y tener que reinstalar el embedded a mi base de datos que estoy utilizando. :confused:
|
Cita:
Para darte tranquilidad te se decir que firebird ofrece el mismo comportamiento en el servidor embebido que en el servidor normal, con la diferencia que el embebido (por obvias razones) no tiene soporte para múltiples usuarios. Saludos. |
Perdón....
Parece ser que coloque el mensaje en el hilo equivocado, lo que necesitaba saber sobre el envío de paramentros a un procedimiento almacenado de la siguiente forma:
La sintaxis que se coloca para enviar los parametros a un procedimiento almacenado es la misma que cuando se le envia información a variables en SQL con delphi: Ejemplo: mi tabla se llama clientes.bgd por dar un ejemplo y tiene los campos nombre, direccion, telefono, email. El código para hacer una consulta seria ango así:
con esto se asignarían valores a los parametros de una consulta a una tabla. Ahora, el procedimiento se llama consulta_cltes y los campos son nombre, direccion, telefono, email, los valores de entrada son NOMB y MAIL, igual que la consulta anterior. ¿como podría asignar los parametros deseados? Gracias de antemano y perdón por la metida de pata pero es que es parte de lo que estoy investigando y me cuatrapie :p |
Hola cuburu
No te entendi muy bien. me confunde unas cositas como esto: Cita:
Si lo que quieres es enviar parametros al SP, debes utilizar el componente TIBStoredProc, En tiempo de ejecucion debes poner algo como esto:
con la primera sentencia le asignas un valor al parametro y con la segunda ejecutas el SP Si tienes algun parametro de salida, puedes visualizarlo con esto:
|
Gracias.
Para que entiendan, lo que deseo es enviar una consulta filtrada basada en el nombre y apellidos de una persona. el código del procedimiento almacenado es: Código:
CREATE PROCEDURE CONSPERSONAS (
Como apenas comienzo a codificar procedimientos quizas esté mal en la sintaxis o algo por el estilo. El error que me manda al abrir la conexión y ejecutar la consulta es este: Cita:
TABLA: Personas NOMBRE varchar(40) APELLIDOS varchar(40) TELEFONO varchar(20) EMAIL varchar(100) Desde ya les doy las gracias por anticipado. :confused: |
Hola, soy yo de nuevo. He resuelto el problema, no como yo lo quisiera pero me ha funcionado hasta que encuentre una solución.
He utilizado un objeto IBQuery y realizado una consulta al procedimiento y listo. Digamos algo así:
Así es como lo he resuelto, pero me gustaría saber si alguien conoce otra forma utilizando el objeto IBStoreProc. Nos leeremos luego... |
En realidad esta me parece la forma mas adecuada de usar los procedimientos que devuelven un cursor..
Saludos. |
Hola cuburu,
Copie tu codigo y lo ejecute con una base que tengo en mi PC. Aqui te mando el codigo de nuevo con unas modificaciones, lo que te paso aqui funciona a la perfeccion.
La unica diferencia es que saco los DataSets que tienes tu y bueno utilizo los MDO para conectarme. Veras que muestro un mensaje, eso es para ver si me entregaba el valor nada mas. En fin, espero que te sirva, no se cual puede ser tu error, pero el ejemplo que te envio funciona. Suerte. Saludos!!! |
Gracias Ricardojosep, Hare la prueba el fin de semana, debido a que me encuentro trabajando fuera y solo tengo chance de hacerlo en esos días.
|
La franja horaria es GMT +2. Ahora son las 02:18:32. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi