OVH Cloud OVH Cloud

GUID et SQL : erreur dans les clauses "WHERE"

1 réponse
Avatar
jackfirst72
En effectuant une opération SQL avec un composant ADO de Delphi, j'obtiens le
message "Valeur de caractère non valide pour la spécification". Ma chaîne SQL
vaut "DELETE FROM myTableName WHERE myTableName_GUID =
'{010E1236-3C36-4080-8A46-FBA3E9D30353}'".
La présence ou non des caractères "{" et "}" se trouvant respectivement au
début et à la fin n'est pas la cause du problème.
Précisions :
- la base est SQL Server 2000 et le problème NE SURVIENT PAS sur toutes les
machines où cette opération est effectuée.
- le problème survient lorsque le GUID est spécifié dans une clause WHERE
seulement et pas lorsqu'il figure comme valeur comme dans un INSERT ou un
UPDATE
- le système est Windows server 2003
- version des MDAC = 2.8
- le problème N'APPARAIT PAS sur d'autres machines équipées de MANIERE
IDENTIQUE
- configuration du serveur (Collation = SQL_Latin1_General_CP1_CI_AS /
Edition = Standard Edition / IsClustered = 0 / IsFullTextInstalled = 1 /
IsIntegratedSecurityOnly = 0 / IsSingleUser = 0 / ProductVersion = 8.00.760 /
ProductLevel = SP3)

1 réponse

Avatar
Philippe [MS]
Peut être ça ?

DELETE FROM myTableName
WHERE myTableName_GUID = '{010E1236-3C36-4080-8A46-FBA3E9D30353}' COLLATE
database_default"

ou alors avec un CONVERT en uniqueidentifier de la chaine :
CONVERT(uniqueidentifier, '{010E1236-3C36-4080-8A46-FBA3E9D30353}') ???

Phil.

"jackfirst72" wrote in message
news:
En effectuant une opération SQL avec un composant ADO de Delphi, j'obtiens


le
message "Valeur de caractère non valide pour la spécification". Ma chaîne


SQL
vaut "DELETE FROM myTableName WHERE myTableName_GUID > '{010E1236-3C36-4080-8A46-FBA3E9D30353}'".
La présence ou non des caractères "{" et "}" se trouvant respectivement au
début et à la fin n'est pas la cause du problème.
Précisions :
- la base est SQL Server 2000 et le problème NE SURVIENT PAS sur toutes


les
machines où cette opération est effectuée.
- le problème survient lorsque le GUID est spécifié dans une clause WHERE
seulement et pas lorsqu'il figure comme valeur comme dans un INSERT ou un
UPDATE
- le système est Windows server 2003
- version des MDAC = 2.8
- le problème N'APPARAIT PAS sur d'autres machines équipées de MANIERE
IDENTIQUE
- configuration du serveur (Collation = SQL_Latin1_General_CP1_CI_AS /
Edition = Standard Edition / IsClustered = 0 / IsFullTextInstalled = 1 /
IsIntegratedSecurityOnly = 0 / IsSingleUser = 0 / ProductVersion 8.00.760 /
ProductLevel = SP3)