Jorge,

Gracias por tu respuesta. Empezaba a pensar que mi mensaje no hab�a llegado al foro!!

De todas formas, se trataba de un error de programaci�n. Si observas en el c�digo SQL, declaro una variable VARCHAR de 1024 posiciones a la que le meto la instrucci�n INSERT, etc, etc, y, adem�s, las 1024 posiciones del valor del campo. Como es l�gico, la variable no pod�a albergar tanta informaci�n y truncaba el final de la misma, porduci�ndose el error. Declarando la variable de m�s longitud (5000, e.ej.), ha funcionado perfectamente, incluso en V5R1.

Gracias de nuevo y un saludo,

--
Jos� de la Herr�n N��ez
Ayuntamiento de Vitoria-Gasteiz
Departamento de Nuevas Tecnolog�as
Pintor Vera Fajardo, 5 bajo, 01008 Vitoria-Gasteiz
Tlf: +34 945 16 16 14
Fax: +34 945 16 16 00
mailto:[EMAIL PROTECTED]



jorge escribi�:

Hola:

En V5R1 no te puedo decir.

Nosotros hemos comenzado a trabajar con Procedimientos Almacenados en V5R2,
IBM dice que en esta versi�n es donde realmente la base de datos aprovecha
al m�ximo las posibilidades.

Despu�s de 25.000 ptf's hemos conseguido que se creen procedimientos
almacenados de un n�mero aceptable de l�neas con variables de un tama�o
considerable, �pero como nos ha costado!.

Saludos.

-----Mensaje original-----
De: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] nombre de Jos� de la Herr�n
Enviado el: martes, 18 de enero de 2005 15:22 p.m.
Para: Forum Help400
Asunto: SQL y procedimientos almacenados


Hola a todos/as,

Tengo una tabla de base de datos sin clave y con un solo campo de tipo
VARCHAR(1024):

CREATE TABLE BIBLIO/TABLA (TEXTO VARCHAR(1024))

He hecho un procedimiento almacenado que recibe como par�metro el valor
del campo y que tiene una simple insert:

CREATE PROCEDURE BIBLIO/PA (
IN TXT VARCHAR(1024))
LANGUAGE SQL
SPECIFIC BIBLIO/PA
NOT DETERMINISTIC
MODIFIES SQL DATA
CALLED ON NULL INPUT
BEGIN
DECLARE SQL_SMT VARCHAR ( 1024 );
SET SQL_SMT = 'INSERT INTO BIBLIO/TABLA VALUES (''' || TRIM(TXT) || ''')';
PREPARE S1 FROM SQL_SMT ;
EXECUTE S1 ;
END

El problema surge cuando llamo a este procedimiento almacenado pas�ndole
las 1024 posiciones rellenas.

CALL BIBLIO/PA ('XXXXXXXXXXXXXXX..........XXXXX')  (hasta 1024 equis)

Me devuelve el siguiente error:

SQL0303 - Variable del lenguaje principal  no compatible.

Haciendo pruebas, he comprobado que no importa la longitud del campo
VARCHAR, el procedimiento s�lo inserta la fila en el caso de que el
par�metro tenga una longitud de, como m�ximo, 986 caracteres (extra�o
n�mero, �verdad?). En el momento en que se le pasan m�s de 986
caracteres, independientemente de que el campo sea VARCHAR(1024),
VARCHAR(2048) o VARCHAR(1000), casca. Me da la impresi�n de que el
problema reside en el c�digo C que genera el iSeries para crear el
procedimiento almacenado. Estamos en V5R1.

�Se puede tratar de un bug? �A alguien le ha pasado algo parecido?

Gracias de antemano por vuestra colaboraci�n.

--
Jos� de la Herr�n N��ez
Ayuntamiento de Vitoria-Gasteiz
Departamento de Nuevas Tecnolog�as
Pintor Vera Fajardo, 5 bajo, 01008 Vitoria-Gasteiz
Tlf: +34 945 16 16 14
Fax: +34 945 16 16 00
mailto:[EMAIL PROTECTED]




_____________________________________________________ Forum.HELP400 es un servicio m�s de NEWS/400. � Publicaciones Help400, S.L. - Todos los derechos reservados http://www.help400.es _____________________________________________________

Para darte de baja, env�a el mensaje resultante de pulsar
mailto:[EMAIL PROTECTED]



_____________________________________________________
Forum.HELP400 es un servicio m�s de NEWS/400.
� Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________

Para darte de baja, env�a el mensaje resultante de pulsar
mailto:[EMAIL PROTECTED]







_____________________________________________________ Forum.HELP400 es un servicio m�s de NEWS/400. � Publicaciones Help400, S.L. - Todos los derechos reservados http://www.help400.es _____________________________________________________

Para darte de baja, env�a el mensaje resultante de pulsar
mailto:[EMAIL PROTECTED]

Responder a