![]() |
ZeosDBO: ZStoredProc intenta hacer un SELECT a un Procedimiento Almacenado !!!!
Hola a todos...
He estado intentando llamar a un Procedimiento Almacenado en Delphi 7, hecho en Interbase 6.5, pero cuando activo el componente ZStoredProc, obtengo este mensaje: Código:
"SQL Error: Dynamic SQL Error code = -84.
Zeos está intentado hacer un SELECT * FROM zap_middatos en vez de EXECUTE PROCEDURE zap_middatos, que sería lo correcto. Muchos se preguntarán ¿por que no usas IBX?, bueno la respuesta es muy simple, el sistema va a entrar en una fase de transición, y la base de datos va a cambiar de Interbase 6.5 a PostgreSQL 8.0. La gran pregunta ¿Como debo configurar el componente para que no haga un SELECT...? ¿o acaso es un error? ¿Debo modificar el código fuente de ZeosLib? Cualquier consejo será útil... PS: Estoy usuando ZeosDBO 6.1.5 stable. |
Solución: retornar variable
Ya que los componentes ZStoredProc se empeñan en hacerle SELECT a procedimiento almacenado sin retorno de valores (en vez de llamarlos con EXECUTE PROCEDURE de manera inteligente) lo mas sencillo es hacer que el procedimiento retorne una variable, pero no necesariamente con un valor, de esta manera:
La variable x (un entero) está declarada, pero no inicializada. Por lo tanto da lo mismo llamarlo con
que usando
Pero en un componente ZStoredProc solamente el segundo funciona, imagino que es porque no es "inteligente" y no evalua si el procedimiento devuelve o no variables (no valores). Eso es todo... supongo que muchos lo sabían... pero unos pocos no, así que para ellos va la explicación :-) |
La franja horaria es GMT +2. Ahora son las 04:42:19. |
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