OVH Cloud OVH Cloud

Problème de longueur de champs

4 réponses
Avatar
MSK24_aka_AMP
Salutations,

venant de mysql, je suis un peu dérouté par les types de données dans SQL
Server 2000....... j'ai besoin d'inclure des textes long dans ma BD, mais le
type de données "varchar" est trop petit (8000 car), et quand j'utilise
"text", ma requete ODBC plante ....... quelle est la solution ? quel est le
problème ?

pour rappel j'uilise : "PHP > ODBC > SQL Server"

4 réponses

Avatar
MSK24_aka_AMP
petit correctif, quand j'utilise "text" j'ai l'impression d'être aussi
bloqué à 8000 car ???!!!
Avatar
Fred BROUARD
Pour manipuler des BLOB il faut utiliser des pointeurs à l'aide des commandes
Transact SQL READTEXT et WRITETEXT. En effet le middleware ODBC ou OLE db
n'accepte pas des lignes plus longues que 8000 octets.

A +

MSK24_aka_AMP a écrit:
Salutations,

venant de mysql, je suis un peu dérouté par les types de données dans SQL
Server 2000....... j'ai besoin d'inclure des textes long dans ma BD, mais le
type de données "varchar" est trop petit (8000 car), et quand j'utilise
"text", ma requete ODBC plante ....... quelle est la solution ? quel est le
problème ?

pour rappel j'uilise : "PHP > ODBC > SQL Server"



--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
Thierry
Bonjour,

Je n'ai pas de problème pour transmettre un argument de type Text de plus de
8000 octets à une commande SQL via ODBC (j'utilise Visual Foxpro)

J'ai capturé les commandes ODBC générées, le type ODBC correspondant à TEXT
est donc SQL_LONGVARCHAR.


vfp9 fa0-c0 EXIT SQLBindParameter with return code 0
(SQL_SUCCESS)
HSTMT 01E21C30
UWORD 1
SWORD 1 <SQL_PARAM_INPUT>
SWORD 1 <SQL_C_CHAR>
SWORD -1 <SQL_LONGVARCHAR>
SQLULEN 279934
SWORD 0
PTR 0x02108B78
SQLLEN 0
SQLLEN * 0x019EE9D0 (279934)


vfp9 fa0-c0 EXIT SQLExecDirect with return code 0 (SQL_SUCCESS)
HSTMT 01E21C30
UCHAR * 0x019E0738 [ -3] "INSERT into #table values
(1,? ) 0"
SDWORD -3



--
Thierry


"Fred BROUARD" a écrit dans le message de news:

Pour manipuler des BLOB il faut utiliser des pointeurs à l'aide des
commandes Transact SQL READTEXT et WRITETEXT. En effet le middleware ODBC
ou OLE db n'accepte pas des lignes plus longues que 8000 octets.

A +

MSK24_aka_AMP a écrit:
Salutations,

venant de mysql, je suis un peu dérouté par les types de données dans SQL
Server 2000....... j'ai besoin d'inclure des textes long dans ma BD, mais
le type de données "varchar" est trop petit (8000 car), et quand
j'utilise "text", ma requete ODBC plante ....... quelle est la solution ?
quel est le problème ?

pour rappel j'uilise : "PHP > ODBC > SQL Server"



--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************



Avatar
MSK24_aka_AMP
Salutations
Pour manipuler des BLOB il faut utiliser des pointeurs à l'aide des
commandes Transact SQL READTEXT et WRITETEXT. En effet le middleware ODBC
ou OLE db n'accepte pas des lignes plus longues que 8000 octets.
A +



Merci de ta réponse, mais du coup j'ai trouvé puis modifié la ligne
"odbc.defaultlrl" dans le "php.ini" .... elle était bloqué à "4096".
C'etait pour moi la manière la plus rapide (pour laisser le site en l'état)
^_^