![]() |
ayuda al llamar un procedimiento...
Hola amigos, les quiero preguntar como llama el valor de un procedimiento desde delphi, explico, tengo una tabla con un generador y un tragger ahora bien, tengo un procedimiento que dice cual es el codigo del generador.
Uso ibexpert si lo ejecuto desde el ibexpert me da el codigoid bien, ahora desde delphi, no se como hacer para que me devuelva el valor. Nota: estoy aprendiendo a usar los precedimientos, es mi primer procedimiento, desde ya gracias. |
Hola
supongamos tener el procedimiento create procedure genera_codi_id returns ( codigo_id integer) as begin codigo_id=gen_id(generador,1); suspend; end desde delphi con un componente ibquery u otro ibquery.sql.text:=' select codigo_id from genera_codi_id' ibquery.open; variable_x:=ibquery.fieldbyname('codigo_id').asinteger; o sea el procedimiento se puede consultar igual que una tabla cualquiera pero debe tener returns y suspend Hay mas formas de hacerlo con ibquery o IBStoredProc ibquery.sql.text:='execute procedure genera_codi_id'; ibquery.execproc; variable_x:=ibquery.parambyname('codigo_id').asinteger; Lo he hecho sin probarlo pero espero no haber cometido errores de sintaxis Saludos |
hola celades. te recomiendo que aprendas a utilizar la etiqueta code (vinculo en mi firma) para que tus trozos de código se vean correctamente indentados.
Hasta luego. ;) |
gracias, lo probare y luego les digo...
|
Aqui les digo que probe el procedimiento y todo salio bien, pero note algo, cada ves que ejecuto el procedimiento me incrementa el generador, sin hacer nungun tipo de transaccion; como se contrala eso....
Esto lo hago usando ibx y firebird 1.03. |
Hola.
Los generadores funcionan independientemente de las transacciones, por lo que siempre te van a incrementar su valor, aunque hagas un Rollback de la transacción en las que se les llamó. Saludos. |
gracias guillotmarc por la atencion; pero habra una forma de consultarlo y que el store precedure no lo incremente.....
|
nunca lo he hecho, pero si dentro del sp llamas a gen_id con un incremento de 0, simplemente te devolverá el valor actual de la secuencia...
Hasta luego. ;) |
asi es como dice..
asi es como dice nuestro amigo jachguate, aunque nunca lo halla hecho si funciona, ami me funciona con un IBStoredProcedure
creamos el procedimiento Código:
Create Procedure REG_IND a la hora de ejecutarlo Código:
IBStoredProcedure.Prepare |
La franja horaria es GMT +2. Ahora son las 00:35:34. |
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