Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/01/2009, 05:33
Avatar de Muzztein
Muzztein
 
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 8 meses
Puntos: 16
Respuesta: Problema campo text Sql-server

Segun mi poca experiencia, eso se debe a que SQL server es solo capaz de insertar una cierta cantidad de caracteres a la vez cuando se suman todos los campos del registro.

Cuando esto ocurre, no te queda otra que hacerlo en dos tandas.
Osea; Primero haces el insert del registro con los datos que te alcancen y luego haces un update sobre este para colocar los datos restantes.

Para no tener que usar dos instrucciones distintas, te recomiendo usar un UPSERT (http://en.wikipedia.org/wiki/Upsert)

Si tienes SQL server 2005, la instruccion ya viene por defecto, si tienes SQL SERVER 2000 deberias hacer algo asi:

Código PHP:
CREATE PROCEDURE IWS_OWN.XPA_SET_CLSS_OB98_NODO
@ID_OBJETO DMN_CODIGOS
@
VERSION_OBJETO DMN_CODIGOS
@
CLASE_OBJETO DMN_CODIGOS
@
CREADOR_OBJETO DMN_CODIGOS
@
ESTADO_OBJETO DMN_CODIGOS
@
ORDEN_NODO DMN_NUMEROS,
@
NIVEL_NODO DMN_NUMEROS,
@
METODO_NODO DMN_CODIGOS,
@
NOMBRE_NODO DMN_CODIGOS,
@
AGRUPADOR_NODO DMN_CODIGOS,
@
PADRE_NODO DMN_CODIGOS
AS 
BEGIN TRANSACTION
UPDATE IWS_OWN
.OB98
SET 
OB98_CDG_VER
ISNULL(@VERSION_OBJETO,OB98_CDG_VER), 
STTS_CDG_ID ISNULL(@ESTADO_OBJETO,STTS_CDG_ID), 
OB98_NMR_01ISNULL(@ORDEN_NODO,OB98_NMR_01),
OB98_NMR_02ISNULL(@NIVEL_NODO,OB98_NMR_02),
OB98_CDG_01ISNULL(@METODO_NODO,OB98_CDG_01),
OB98_CDG_02ISNULL(@NOMBRE_NODO,OB98_CDG_02),
OB98_CDG_04ISNULL(@AGRUPADOR_NODO,OB98_CDG_04),
OB98_CDG_05ISNULL(@PADRE_NODO,OB98_CDG_05)
WHERE OB98_CDG_ID = @ID_OBJETO 
AND OB98_CDG_ID '0'

IF @@ROWCOUNT 
INSERT INTO IWS_OWN
.OB98(
OB98_CDG_ID,
OB98_CDG_VER,
CLSS_CDG_ID,
PRSN_CDG_ID,
STTS_CDG_ID,
OB98_NMR_01,
OB98_NMR_02,
OB98_CDG_01,
OB98_CDG_02,
OB98_CDG_04,
OB98_CDG_05
)VALUES(
@
ID_OBJETO,
@
VERSION_OBJETO,
@
CLASE_OBJETO,
@
CREADOR_OBJETO,
@
ESTADO_OBJETO,
@
ORDEN_NODO,
@
NIVEL_NODO,
@
METODO_NODO,
@
NOMBRE_NODO,
@
AGRUPADOR_NODO,
@
PADRE_NODO)
COMMIT

GO 


tb podrias hacer que en el mismo SP se ejecute dos veces la instruccion.

Pero lo que queda claro es que en una sola insercion no se puede hacer