PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Limitation procédure stockée SQL Server
Limitation procédure stockée SQL Server
Débuté par jejestanko, 13 sep. 2022 10:55 - 4 réponses
Membre enregistré
3 messages
Posté le 13 septembre 2022 - 10:55
Bonjour à tous,

Cela faisait un moment que je voulais signaler le problème suivant :
Dans mes programmes où j'utilise SQL Server, je code principalement avec des procédures stockées. Lors de l'appel de ces procédures stockées avec l'accès natif SQL Server, les paramètres d'entrée de type texte long (varchar(max), text) sont automatiquement tronqués par l'accès natif à 1026 caractères (vérifié avec le profiler) !
Je suppose que je ne suis pas le seul à voir constater ce problème qui est très ennuyeux. Est ce que quelqu'un a une solution de contournement viable ?
D'avance, merci à tous
Membre enregistré
2 682 messages
Posté le 13 septembre 2022 - 11:22
Passer par HExecuteRequeteSQL() avec le paramètre hSansCorrection ?

--
Cordialement,

Philippe SAINT-BERTIN
Membre enregistré
3 messages
Posté le 13 septembre 2022 - 11:43
C'est ce que je fais systématiquement bien sûr mais ça ne permet pas de résoudre ce problème...
Membre enregistré
3 messages
Posté le 14 septembre 2022 - 10:08
Re:
Après de nouveaux tests, il s'avère que le problème se pose uniquement lorsque vous utilisez l'accés natif SQL Server via OLE DB. Le problème n'existe pas avec ODBC.
Posté le 08 juillet 2025 - 09:25
Bonjour,

Pour information le résultat est correct en utilisant une variable de type buffer pour alimenter la variable text ou varchar(max) à l'appel de la procédure stockée.

sdSQLAutomate est une Source de Données
nID est entier sur 8 octets
bufTRSFILE est un Buffer = sImportPV // chaine ANSI de 10547 caractères

sdSQLAutomate.TRSENTITE = 99
sdSQLAutomate.TRSPROFIL = ""
sdSQLAutomate.TRSFILE = bufTRSFILE
sdSQLAutomate.ExécuteRequêteSQL(gcnxWAVESOFT,hRequêteSansCorrection,"[dbo].[ws_sp_add_tache_automate] @TRSENTITE,@TRSPROFIL,@TRSFILE")
nID=sdSQLAutomate.return_value

Test est une Requête SQL =
[
SELECT LEN(TRSFILE) FROM WSAUTOMATE WHERE WSAUTOMATE.TRSID={pID}
]
Test.pID=sdSQLAutomate.return_value
Test.ExécuteRequête() // la requête renvoie bien 10547


Si ça peut aider quelqu'un...

Erick