En créant la procédure stockée suivante, j'obtiens l'erreur 446 : impossible
de résoudre le classement en conflit de l'opération equal to, au moment de
vérifier sa syntaxe.
CREATE PROCEDURE dbo.Aatest
(
@ListeGroupes varchar(4095)
)
AS
SET NOCOUNT OFF;
SELECT
AupCodTypeIdentification
, AupNomDomaineIdentifiant
FROM AutorisationProgramme
JOIN ParseString(@ListeGroupes) Liste ON AupNomDomaineIdentifiant =
Liste.mot
;
GO
Le but est de sélectionner les enregistrements pour lequels le champ
AupNomDomaineIdentifiant (varchar 255) est égal à une des valeurs contenues
dans @ListeGroupes.
La fonction ParseString est la suivante :
/* Fonction traitant une liste de valeurs String pour permettre son emploi
comme critère de sélection dans une instruction SELECT */
/* Inspiré de http://www.sommarskog.se/arrays-in-sql-2000.html#iterative */
/* Gilbert Tordeur - 9/1/2007 */
CREATE FUNCTION dbo.ParseString
(
@liste varchar(4095)
)
RETURNS @tbl TABLE (mot varchar(255))
AS
BEGIN
DECLARE
@pos int
, @textpos int
, @tmpstr varchar(4095)
, @tmpval varchar(255)
, @delimiter char(1)
SET @textpos = 1
SET @delimiter = ','
SET @tmpstr = @liste
SET @textpos = 1
SET @pos = charindex(@delimiter, @tmpstr)
WHILE @pos > 0
BEGIN
SET @tmpval = ltrim(rtrim(left(@tmpstr, @pos - 1)))
INSERT @tbl (mot) VALUES(@tmpval)
SET @tmpstr = substring(@tmpstr, @pos + 1, len(@tmpstr))
SET @pos = charindex(@delimiter, @tmpstr)
END
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
SQLpro
Il suffit que vous pilotiez la collation adéquate dans l'opération de comparaison des châines de caractère "=".
Lisez l'article que j'ai écrit à, ce sujet : http://sqlpro.developpez.com/cours/sqlserver/collations/
A +
Frédéric BROUARD - SQLpro - MVP SQL Server Spécialiste SQL/BD modélisation de données SQL & SGBDR http://sqlpro.developpez.com/ Expert SQL Server : http://www.sqlspot.com audits - optimisation - tuning - formation
On 9 jan, 16:55, "Gilbert Tordeur" wrote:
Bonjour,
En créant la procédure stockée suivante, j'obtiens l'erreur 446 : im possible de résoudre le classement en conflit de l'opération equal to, au momen t de vérifier sa syntaxe.
CREATE PROCEDURE dbo.Aatest ( @ListeGroupes varchar(4095) ) AS SET NOCOUNT OFF; SELECT AupCodTypeIdentification , AupNomDomaineIdentifiant FROM AutorisationProgramme JOIN ParseString(@ListeGroupes) Liste ON AupNomDomaineIdentifiant = Liste.mot ; GO
Le but est de sélectionner les enregistrements pour lequels le champ AupNomDomaineIdentifiant (varchar 255) est égal à une des valeurs cont enues dans @ListeGroupes.
La fonction ParseString est la suivante :
/* Fonction traitant une liste de valeurs String pour permettre son emploi comme critère de sélection dans une instruction SELECT */ /* Inspiré dehttp://www.sommarskog.se/arrays-in-sql-2000.html#iterative* / /* Gilbert Tordeur - 9/1/2007 */ CREATE FUNCTION dbo.ParseString ( @liste varchar(4095) ) RETURNS @tbl TABLE (mot varchar(255)) AS
BEGIN DECLARE @pos int , @textpos int , @tmpstr varchar(4095) , @tmpval varchar(255) , @delimiter char(1)
SET @textpos = 1 SET @delimiter = ',' SET @tmpstr = @liste SET @textpos = 1 SET @pos = charindex(@delimiter, @tmpstr)
WHILE @pos > 0 BEGIN SET @tmpval = ltrim(rtrim(left(@tmpstr, @pos - 1))) INSERT @tbl (mot) VALUES(@tmpval) SET @tmpstr = substring(@tmpstr, @pos + 1, len(@tmpstr)) SET @pos = charindex(@delimiter, @tmpstr) END
Je ne comprends pas le message d'erreur, et suis donc dans l'incapacité d'y remédier. Merci de votre aide. Gilbert Tordeur
Il suffit que vous pilotiez la collation adéquate dans l'opération de
comparaison des châines de caractère "=".
Lisez l'article que j'ai écrit à, ce sujet :
http://sqlpro.developpez.com/cours/sqlserver/collations/
A +
Frédéric BROUARD - SQLpro - MVP SQL Server
Spécialiste SQL/BD modélisation de données
SQL & SGBDR http://sqlpro.developpez.com/
Expert SQL Server : http://www.sqlspot.com
audits - optimisation - tuning - formation
On 9 jan, 16:55, "Gilbert Tordeur" <gilbert.tord...@jci.com> wrote:
Bonjour,
En créant la procédure stockée suivante, j'obtiens l'erreur 446 : im possible
de résoudre le classement en conflit de l'opération equal to, au momen t de
vérifier sa syntaxe.
CREATE PROCEDURE dbo.Aatest
(
@ListeGroupes varchar(4095)
)
AS
SET NOCOUNT OFF;
SELECT
AupCodTypeIdentification
, AupNomDomaineIdentifiant
FROM AutorisationProgramme
JOIN ParseString(@ListeGroupes) Liste ON AupNomDomaineIdentifiant =
Liste.mot
;
GO
Le but est de sélectionner les enregistrements pour lequels le champ
AupNomDomaineIdentifiant (varchar 255) est égal à une des valeurs cont enues
dans @ListeGroupes.
La fonction ParseString est la suivante :
/* Fonction traitant une liste de valeurs String pour permettre son emploi
comme critère de sélection dans une instruction SELECT */
/* Inspiré dehttp://www.sommarskog.se/arrays-in-sql-2000.html#iterative* /
/* Gilbert Tordeur - 9/1/2007 */
CREATE FUNCTION dbo.ParseString
(
@liste varchar(4095)
)
RETURNS @tbl TABLE (mot varchar(255))
AS
BEGIN
DECLARE
@pos int
, @textpos int
, @tmpstr varchar(4095)
, @tmpval varchar(255)
, @delimiter char(1)
SET @textpos = 1
SET @delimiter = ','
SET @tmpstr = @liste
SET @textpos = 1
SET @pos = charindex(@delimiter, @tmpstr)
WHILE @pos > 0
BEGIN
SET @tmpval = ltrim(rtrim(left(@tmpstr, @pos - 1)))
INSERT @tbl (mot) VALUES(@tmpval)
SET @tmpstr = substring(@tmpstr, @pos + 1, len(@tmpstr))
SET @pos = charindex(@delimiter, @tmpstr)
END
Il suffit que vous pilotiez la collation adéquate dans l'opération de comparaison des châines de caractère "=".
Lisez l'article que j'ai écrit à, ce sujet : http://sqlpro.developpez.com/cours/sqlserver/collations/
A +
Frédéric BROUARD - SQLpro - MVP SQL Server Spécialiste SQL/BD modélisation de données SQL & SGBDR http://sqlpro.developpez.com/ Expert SQL Server : http://www.sqlspot.com audits - optimisation - tuning - formation
On 9 jan, 16:55, "Gilbert Tordeur" wrote:
Bonjour,
En créant la procédure stockée suivante, j'obtiens l'erreur 446 : im possible de résoudre le classement en conflit de l'opération equal to, au momen t de vérifier sa syntaxe.
CREATE PROCEDURE dbo.Aatest ( @ListeGroupes varchar(4095) ) AS SET NOCOUNT OFF; SELECT AupCodTypeIdentification , AupNomDomaineIdentifiant FROM AutorisationProgramme JOIN ParseString(@ListeGroupes) Liste ON AupNomDomaineIdentifiant = Liste.mot ; GO
Le but est de sélectionner les enregistrements pour lequels le champ AupNomDomaineIdentifiant (varchar 255) est égal à une des valeurs cont enues dans @ListeGroupes.
La fonction ParseString est la suivante :
/* Fonction traitant une liste de valeurs String pour permettre son emploi comme critère de sélection dans une instruction SELECT */ /* Inspiré dehttp://www.sommarskog.se/arrays-in-sql-2000.html#iterative* / /* Gilbert Tordeur - 9/1/2007 */ CREATE FUNCTION dbo.ParseString ( @liste varchar(4095) ) RETURNS @tbl TABLE (mot varchar(255)) AS
BEGIN DECLARE @pos int , @textpos int , @tmpstr varchar(4095) , @tmpval varchar(255) , @delimiter char(1)
SET @textpos = 1 SET @delimiter = ',' SET @tmpstr = @liste SET @textpos = 1 SET @pos = charindex(@delimiter, @tmpstr)
WHILE @pos > 0 BEGIN SET @tmpval = ltrim(rtrim(left(@tmpstr, @pos - 1))) INSERT @tbl (mot) VALUES(@tmpval) SET @tmpstr = substring(@tmpstr, @pos + 1, len(@tmpstr)) SET @pos = charindex(@delimiter, @tmpstr) END
Je ne comprends pas le message d'erreur, et suis donc dans l'incapacité d'y remédier. Merci de votre aide. Gilbert Tordeur
Philippe TROTIN [MS]
Bonjour, Avec un COLLATE database_default par exemple
SELECT AupCodTypeIdentification , AupNomDomaineIdentifiant FROM AutorisationProgramme JOIN ParseString(@ListeGroupes) Liste ON AupNomDomaineIdentifiant = Liste.mot COLLATE database_default
Cordialement _______________________________
Philippe TROTIN Microsoft Services France _______________________________
"Gilbert Tordeur" a écrit dans le message de groupe de discussion :
Bonjour,
En créant la procédure stockée suivante, j'obtiens l'erreur 446 : impossible de résoudre le classement en conflit de l'opération equal to, au moment de vérifier sa syntaxe.
CREATE PROCEDURE dbo.Aatest ( @ListeGroupes varchar(4095) ) AS SET NOCOUNT OFF; SELECT AupCodTypeIdentification , AupNomDomaineIdentifiant FROM AutorisationProgramme JOIN ParseString(@ListeGroupes) Liste ON AupNomDomaineIdentifiant = Liste.mot ; GO
Le but est de sélectionner les enregistrements pour lequels le champ AupNomDomaineIdentifiant (varchar 255) est égal à une des valeurs contenues dans @ListeGroupes.
La fonction ParseString est la suivante :
/* Fonction traitant une liste de valeurs String pour permettre son emploi comme critère de sélection dans une instruction SELECT */ /* Inspiré de http://www.sommarskog.se/arrays-in-sql-2000.html#iterative */ /* Gilbert Tordeur - 9/1/2007 */ CREATE FUNCTION dbo.ParseString ( @liste varchar(4095) ) RETURNS @tbl TABLE (mot varchar(255)) AS
BEGIN DECLARE @pos int , @textpos int , @tmpstr varchar(4095) , @tmpval varchar(255) , @delimiter char(1)
SET @textpos = 1 SET @delimiter = ',' SET @tmpstr = @liste SET @textpos = 1 SET @pos = charindex(@delimiter, @tmpstr)
WHILE @pos > 0 BEGIN SET @tmpval = ltrim(rtrim(left(@tmpstr, @pos - 1))) INSERT @tbl (mot) VALUES(@tmpval) SET @tmpstr = substring(@tmpstr, @pos + 1, len(@tmpstr)) SET @pos = charindex(@delimiter, @tmpstr) END
Je ne comprends pas le message d'erreur, et suis donc dans l'incapacité d'y remédier. Merci de votre aide. Gilbert Tordeur
Bonjour,
Avec un COLLATE database_default par exemple
SELECT
AupCodTypeIdentification
, AupNomDomaineIdentifiant
FROM AutorisationProgramme
JOIN ParseString(@ListeGroupes) Liste ON AupNomDomaineIdentifiant
= Liste.mot COLLATE database_default
Cordialement
_______________________________
Philippe TROTIN
Microsoft Services France
_______________________________
"Gilbert Tordeur" <gilbert.tordeur@jci.com> a écrit dans le message de
groupe de discussion : excHDgtUIHA.2464@TK2MSFTNGP04.phx.gbl...
Bonjour,
En créant la procédure stockée suivante, j'obtiens l'erreur 446 :
impossible de résoudre le classement en conflit de l'opération equal to,
au moment de vérifier sa syntaxe.
CREATE PROCEDURE dbo.Aatest
(
@ListeGroupes varchar(4095)
)
AS
SET NOCOUNT OFF;
SELECT
AupCodTypeIdentification
, AupNomDomaineIdentifiant
FROM AutorisationProgramme
JOIN ParseString(@ListeGroupes) Liste ON AupNomDomaineIdentifiant
= Liste.mot
;
GO
Le but est de sélectionner les enregistrements pour lequels le champ
AupNomDomaineIdentifiant (varchar 255) est égal à une des valeurs
contenues dans @ListeGroupes.
La fonction ParseString est la suivante :
/* Fonction traitant une liste de valeurs String pour permettre son emploi
comme critère de sélection dans une instruction SELECT */
/* Inspiré de http://www.sommarskog.se/arrays-in-sql-2000.html#iterative
*/
/* Gilbert Tordeur - 9/1/2007 */
CREATE FUNCTION dbo.ParseString
(
@liste varchar(4095)
)
RETURNS @tbl TABLE (mot varchar(255))
AS
BEGIN
DECLARE
@pos int
, @textpos int
, @tmpstr varchar(4095)
, @tmpval varchar(255)
, @delimiter char(1)
SET @textpos = 1
SET @delimiter = ','
SET @tmpstr = @liste
SET @textpos = 1
SET @pos = charindex(@delimiter, @tmpstr)
WHILE @pos > 0
BEGIN
SET @tmpval = ltrim(rtrim(left(@tmpstr, @pos - 1)))
INSERT @tbl (mot) VALUES(@tmpval)
SET @tmpstr = substring(@tmpstr, @pos + 1, len(@tmpstr))
SET @pos = charindex(@delimiter, @tmpstr)
END
Bonjour, Avec un COLLATE database_default par exemple
SELECT AupCodTypeIdentification , AupNomDomaineIdentifiant FROM AutorisationProgramme JOIN ParseString(@ListeGroupes) Liste ON AupNomDomaineIdentifiant = Liste.mot COLLATE database_default
Cordialement _______________________________
Philippe TROTIN Microsoft Services France _______________________________
"Gilbert Tordeur" a écrit dans le message de groupe de discussion :
Bonjour,
En créant la procédure stockée suivante, j'obtiens l'erreur 446 : impossible de résoudre le classement en conflit de l'opération equal to, au moment de vérifier sa syntaxe.
CREATE PROCEDURE dbo.Aatest ( @ListeGroupes varchar(4095) ) AS SET NOCOUNT OFF; SELECT AupCodTypeIdentification , AupNomDomaineIdentifiant FROM AutorisationProgramme JOIN ParseString(@ListeGroupes) Liste ON AupNomDomaineIdentifiant = Liste.mot ; GO
Le but est de sélectionner les enregistrements pour lequels le champ AupNomDomaineIdentifiant (varchar 255) est égal à une des valeurs contenues dans @ListeGroupes.
La fonction ParseString est la suivante :
/* Fonction traitant une liste de valeurs String pour permettre son emploi comme critère de sélection dans une instruction SELECT */ /* Inspiré de http://www.sommarskog.se/arrays-in-sql-2000.html#iterative */ /* Gilbert Tordeur - 9/1/2007 */ CREATE FUNCTION dbo.ParseString ( @liste varchar(4095) ) RETURNS @tbl TABLE (mot varchar(255)) AS
BEGIN DECLARE @pos int , @textpos int , @tmpstr varchar(4095) , @tmpval varchar(255) , @delimiter char(1)
SET @textpos = 1 SET @delimiter = ',' SET @tmpstr = @liste SET @textpos = 1 SET @pos = charindex(@delimiter, @tmpstr)
WHILE @pos > 0 BEGIN SET @tmpval = ltrim(rtrim(left(@tmpstr, @pos - 1))) INSERT @tbl (mot) VALUES(@tmpval) SET @tmpstr = substring(@tmpstr, @pos + 1, len(@tmpstr)) SET @pos = charindex(@delimiter, @tmpstr) END
Je ne comprends pas le message d'erreur, et suis donc dans l'incapacité d'y remédier. Merci de votre aide. Gilbert Tordeur
Gilbert Tordeur
Merci à Philippe pour la solution, qui a effectivement résolu mon problème, et merci à Frédéric pour l'article de fond, que je vais me farcir aujourd'hui. Bonne journée, Gilbert Tordeur
"Philippe TROTIN [MS]" a écrit dans le message de news:
Bonjour, Avec un COLLATE database_default par exemple
SELECT AupCodTypeIdentification , AupNomDomaineIdentifiant FROM AutorisationProgramme JOIN ParseString(@ListeGroupes) Liste ON AupNomDomaineIdentifiant = Liste.mot COLLATE database_default
Cordialement _______________________________
Philippe TROTIN Microsoft Services France _______________________________
"Gilbert Tordeur" a écrit dans le message de groupe de discussion :
Bonjour,
En créant la procédure stockée suivante, j'obtiens l'erreur 446 : impossible de résoudre le classement en conflit de l'opération equal to, au moment de vérifier sa syntaxe.
CREATE PROCEDURE dbo.Aatest ( @ListeGroupes varchar(4095) ) AS SET NOCOUNT OFF; SELECT AupCodTypeIdentification , AupNomDomaineIdentifiant FROM AutorisationProgramme JOIN ParseString(@ListeGroupes) Liste ON AupNomDomaineIdentifiant = Liste.mot ; GO
Le but est de sélectionner les enregistrements pour lequels le champ AupNomDomaineIdentifiant (varchar 255) est égal à une des valeurs contenues dans @ListeGroupes.
La fonction ParseString est la suivante :
/* Fonction traitant une liste de valeurs String pour permettre son emploi comme critère de sélection dans une instruction SELECT */ /* Inspiré de http://www.sommarskog.se/arrays-in-sql-2000.html#iterative */ /* Gilbert Tordeur - 9/1/2007 */ CREATE FUNCTION dbo.ParseString ( @liste varchar(4095) ) RETURNS @tbl TABLE (mot varchar(255)) AS
BEGIN DECLARE @pos int , @textpos int , @tmpstr varchar(4095) , @tmpval varchar(255) , @delimiter char(1)
SET @textpos = 1 SET @delimiter = ',' SET @tmpstr = @liste SET @textpos = 1 SET @pos = charindex(@delimiter, @tmpstr)
WHILE @pos > 0 BEGIN SET @tmpval = ltrim(rtrim(left(@tmpstr, @pos - 1))) INSERT @tbl (mot) VALUES(@tmpval) SET @tmpstr = substring(@tmpstr, @pos + 1, len(@tmpstr)) SET @pos = charindex(@delimiter, @tmpstr) END
Je ne comprends pas le message d'erreur, et suis donc dans l'incapacité d'y remédier. Merci de votre aide. Gilbert Tordeur
Merci à Philippe pour la solution, qui a effectivement résolu mon problème,
et merci à Frédéric pour l'article de fond, que je vais me farcir
aujourd'hui.
Bonne journée,
Gilbert Tordeur
"Philippe TROTIN [MS]" <ptrotin@online.microsoft.com> a écrit dans le
message de news: 1376C836-E9D8-4468-9A39-FF928FD5D749@microsoft.com...
Bonjour,
Avec un COLLATE database_default par exemple
SELECT
AupCodTypeIdentification
, AupNomDomaineIdentifiant
FROM AutorisationProgramme
JOIN ParseString(@ListeGroupes) Liste ON AupNomDomaineIdentifiant
= Liste.mot COLLATE database_default
Cordialement
_______________________________
Philippe TROTIN
Microsoft Services France
_______________________________
"Gilbert Tordeur" <gilbert.tordeur@jci.com> a écrit dans le message de
groupe de discussion : excHDgtUIHA.2464@TK2MSFTNGP04.phx.gbl...
Bonjour,
En créant la procédure stockée suivante, j'obtiens l'erreur 446 :
impossible de résoudre le classement en conflit de l'opération equal to,
au moment de vérifier sa syntaxe.
CREATE PROCEDURE dbo.Aatest
(
@ListeGroupes varchar(4095)
)
AS
SET NOCOUNT OFF;
SELECT
AupCodTypeIdentification
, AupNomDomaineIdentifiant
FROM AutorisationProgramme
JOIN ParseString(@ListeGroupes) Liste ON AupNomDomaineIdentifiant
= Liste.mot
;
GO
Le but est de sélectionner les enregistrements pour lequels le champ
AupNomDomaineIdentifiant (varchar 255) est égal à une des valeurs
contenues dans @ListeGroupes.
La fonction ParseString est la suivante :
/* Fonction traitant une liste de valeurs String pour permettre son
emploi comme critère de sélection dans une instruction SELECT */
/* Inspiré de http://www.sommarskog.se/arrays-in-sql-2000.html#iterative
*/
/* Gilbert Tordeur - 9/1/2007 */
CREATE FUNCTION dbo.ParseString
(
@liste varchar(4095)
)
RETURNS @tbl TABLE (mot varchar(255))
AS
BEGIN
DECLARE
@pos int
, @textpos int
, @tmpstr varchar(4095)
, @tmpval varchar(255)
, @delimiter char(1)
SET @textpos = 1
SET @delimiter = ','
SET @tmpstr = @liste
SET @textpos = 1
SET @pos = charindex(@delimiter, @tmpstr)
WHILE @pos > 0
BEGIN
SET @tmpval = ltrim(rtrim(left(@tmpstr, @pos - 1)))
INSERT @tbl (mot) VALUES(@tmpval)
SET @tmpstr = substring(@tmpstr, @pos + 1, len(@tmpstr))
SET @pos = charindex(@delimiter, @tmpstr)
END
Merci à Philippe pour la solution, qui a effectivement résolu mon problème, et merci à Frédéric pour l'article de fond, que je vais me farcir aujourd'hui. Bonne journée, Gilbert Tordeur
"Philippe TROTIN [MS]" a écrit dans le message de news:
Bonjour, Avec un COLLATE database_default par exemple
SELECT AupCodTypeIdentification , AupNomDomaineIdentifiant FROM AutorisationProgramme JOIN ParseString(@ListeGroupes) Liste ON AupNomDomaineIdentifiant = Liste.mot COLLATE database_default
Cordialement _______________________________
Philippe TROTIN Microsoft Services France _______________________________
"Gilbert Tordeur" a écrit dans le message de groupe de discussion :
Bonjour,
En créant la procédure stockée suivante, j'obtiens l'erreur 446 : impossible de résoudre le classement en conflit de l'opération equal to, au moment de vérifier sa syntaxe.
CREATE PROCEDURE dbo.Aatest ( @ListeGroupes varchar(4095) ) AS SET NOCOUNT OFF; SELECT AupCodTypeIdentification , AupNomDomaineIdentifiant FROM AutorisationProgramme JOIN ParseString(@ListeGroupes) Liste ON AupNomDomaineIdentifiant = Liste.mot ; GO
Le but est de sélectionner les enregistrements pour lequels le champ AupNomDomaineIdentifiant (varchar 255) est égal à une des valeurs contenues dans @ListeGroupes.
La fonction ParseString est la suivante :
/* Fonction traitant une liste de valeurs String pour permettre son emploi comme critère de sélection dans une instruction SELECT */ /* Inspiré de http://www.sommarskog.se/arrays-in-sql-2000.html#iterative */ /* Gilbert Tordeur - 9/1/2007 */ CREATE FUNCTION dbo.ParseString ( @liste varchar(4095) ) RETURNS @tbl TABLE (mot varchar(255)) AS
BEGIN DECLARE @pos int , @textpos int , @tmpstr varchar(4095) , @tmpval varchar(255) , @delimiter char(1)
SET @textpos = 1 SET @delimiter = ',' SET @tmpstr = @liste SET @textpos = 1 SET @pos = charindex(@delimiter, @tmpstr)
WHILE @pos > 0 BEGIN SET @tmpval = ltrim(rtrim(left(@tmpstr, @pos - 1))) INSERT @tbl (mot) VALUES(@tmpval) SET @tmpstr = substring(@tmpstr, @pos + 1, len(@tmpstr)) SET @pos = charindex(@delimiter, @tmpstr) END