FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problema con EXECUTE STATEMENT
Hola:
Recien descubiertas las EXECUTE STATEMENT las he implementado en un procedimiento almacenado. He utilizado IBExpert para implementarlas y al probarla con el Debugger todo va perfecto, pero al ejecutarla directamente me da un error: Variable type (position 0) in EXECUTE STATEMENT 'SELECT COUNT(CODIGO) FROM DOCUMENTOS WHERE CODIGO=' INTO does not match return. La sentencia SQL es:
No se qué puede estar pasando. A ver si alguien puede ayudarme, gracias de antemano. |
#2
|
||||
|
||||
Hola.
¿ De que tipo es :CANTIDAD ? Prueba a definirlo como BIGINT. Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#3
|
||||
|
||||
Hola
Asegúrate de que el parámetro :CODIGO tiene algún valor, por la sentencia construida en el mensaje de error, podría ser que ese parámetro estuviese nulo. Antes de ejecutar el EXECUTE STATEMENT, podrias poner algo como : if (:CODIGO is null) then CODIGO = -1; Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#4
|
|||
|
|||
Hola.
Gracias por la respuesta, pero he probado las dos cosas y nada. De todas maneras cuando :CAMPO tiene otro valor más largo, en el mensaje de error sale cortado. Es muy raro porque en el debugger va bien, pero no si lo ejecuto directamente. ¿Acaso es por el Where? No se , quizas no está bien construida la cadena. |
#5
|
||||
|
||||
Creo que el problema es que no te está concatenando el último parámetro, es decir el valor de :codigo.
probá sin concatenar el parámetro, solo para confirmar. Digamos
y luego hacer un cast del valor numérico (que me imagino) que recibis, convirtiendolo en un valor varchar. Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#6
|
|||
|
|||
Uf, sigo igual. Es muy raro, es como si la parte de la cadena del EXECUTE STATEMENT que va delante del INTO estuviese limitada, porque si a la sentencia que he puesto antes la acorto, el mensaje de error ya incluye parte del código, por ejemplo:
Código:
Unsuccessful execution caused by an unavailable resource. Variable type (position 0) in EXECUTE STATEMENT 'SELECT MAX(CODIGO) FROM DOCUMENTOS WHERE CODIGO=00' INTO does not match return. ¿Sabe alguien si es que está limitado?. ¿Hay alguna otra manera de hacer algo parecido? Gracias por todas las respuestas |
#7
|
||||
|
||||
Lo que es limitado es la longitud de los mensajes de error... creo que el secreto está en:
Cita:
o bien por: Cita:
Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#8
|
|||
|
|||
Hola
si el campo (campo) de la tabla (tabla) es de tipo varchar falrtarian las comillas Código:
EXECUTE STATEMENT 'select COUNT(' || :CAMPO || ') FROM ' || :TABLA ||' WHERE '|| :CAMPO ||'=''' ||:CODIGO||'''' INTO :CANTIDAD; Por cierto no se donde estan las etiquetas sql |
#9
|
||||
|
||||
Cita:
En el editor WYSIWYG no hay ningún botón para insertarlas... debido a que esto es un "plugin" desarrollado por román y cadetill, y no una parte "estándar" del vBulletin; pero nada te impide insertarlas desde el teclado... Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#10
|
|||
|
|||
Uf! Arreglado. Esto era para voverse loco.
El problema estaba en la declaración de CANTIDAD, pues estaba al principio definido como SMALLINT, tras el mensaje: Cita:
Gracias a todos por vuestras respuestas. |
#11
|
||||
|
||||
Hola.
Es lógico que deba ser del tipo INT, tiene que ser del mismo tipo que el campo sobre el que se calcula el MAX. (Aunque propuse que probaras el BIGINT porqué di por sentado que estaba fallando con el tipo INT). Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
|
|
|