Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   ASP Clásico (http://www.forosdelweb.com/f15/)
-   -   Problema campo text Sql-server (http://www.forosdelweb.com/f15/problema-campo-text-sql-server-660504/)

Trutxof 09/01/2009 05:09

Problema campo text Sql-server
 
Jeje, casualidad he leido un post reciente parecido pero con access. Bueno, al grano.

Tengo en la base de datos un campo text. Introduzco los datos mediante un procedimiento almacenado, en el cual tambien utilizo una variable text. Pero me sigue dando problemas al insertar mas de 8064 caracteres (creo que es esa la cantidad).

Cargo la variable del procedimiento almacenado de la siguiente manera:

cmdModAdd.Parameters.Append cmdModAdd.CreateParameter("@Contenido", adLongVarChar, adParamInput, longitud_texto, Contenido)

donde "Const adLongVarChar = 201"

Espero haberme expicado bien y puedan enterdeme...

Gracias por todo

Muzztein 09/01/2009 05:33

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:borracho:

u_goldman 09/01/2009 16:46

Respuesta: Problema campo text Sql-server
 
Además de lo que dice Muzztein, trata envíandole un tamaño enorme como parámetro:

Código:


cmdModAdd.Parameters.Append cmdModAdd.CreateParameter("@Contenido", adLongVarChar, adParamInput, 1000000, Contenido)

Saludos

Trutxof 10/01/2009 04:51

Respuesta: Problema campo text Sql-server
 
Ok, gracias a ambos por sus respuestas. Aunque el asunto tendrá que esperar hasta el lunes ;)

Saludos


La zona horaria es GMT -6. Ahora son las 10:14.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.