-----Message d'origine-----
Re-salut
il te faut peut etre ajouter ceci dans ta PS
Set NoCount on
car je suppose que le 0 est le nombre de ligne retournées
sais ?!
@+
Boss Hog
"Stéphane Gauthier" <NOSPAMstephane.gauthier-
in message news:a16401c47942$5111a5d0$
J'ai une requête UPDATE qui me retourne une erreur car la
sous-requête renvoit plusieurs valeurs.
Comme ce cas peut arriver, je le gère en testant le
@@ERROR après le UPDATE, mais même si la requête plante,
le @@ERROR=0...
Je ne comprends pas, surtout que cela n'arrive pas sur
tous les serveurs (essayé la requête sur plusieurs), même
si ils ont la même version: SQLServer 2000 SP3a sur Win2k.
Je mets ci dessous la requête que j'ai:
UPDATE SMART.DBO.TRT_CUSTOMERS
SET
FOLDER_ID=(SELECT S._SITE_ID
FROM SMART.DBO.SITE S , SMART.DBO.RHOCUSCO R
WHERE CUSTOMER_ID=R._RHO_CODE
AND ERP_CODE=R._ERP_CODE
AND S._INTERNID=R._INTERNID)
print @@error
Et ça donne le résultat:
Server: Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted
when the subquery follows =, !=, <, <= , >, >= or when the
subquery is used as an expression.
The statement has been terminated.
0
Notez bien le "0"...
Pourquoi il me fait ça?
.
-----Message d'origine-----
Re-salut
il te faut peut etre ajouter ceci dans ta PS
Set NoCount on
car je suppose que le 0 est le nombre de ligne retournées
sais ?!
@+
Boss Hog
"Stéphane Gauthier" <NOSPAMstephane.gauthier-
in message news:a16401c47942$5111a5d0$a301280a@phx.gbl...
J'ai une requête UPDATE qui me retourne une erreur car la
sous-requête renvoit plusieurs valeurs.
Comme ce cas peut arriver, je le gère en testant le
@@ERROR après le UPDATE, mais même si la requête plante,
le @@ERROR=0...
Je ne comprends pas, surtout que cela n'arrive pas sur
tous les serveurs (essayé la requête sur plusieurs), même
si ils ont la même version: SQLServer 2000 SP3a sur Win2k.
Je mets ci dessous la requête que j'ai:
UPDATE SMART.DBO.TRT_CUSTOMERS
SET
FOLDER_ID=(SELECT S._SITE_ID
FROM SMART.DBO.SITE S , SMART.DBO.RHOCUSCO R
WHERE CUSTOMER_ID=R._RHO_CODE
AND ERP_CODE=R._ERP_CODE
AND S._INTERNID=R._INTERNID)
print @@error
Et ça donne le résultat:
Server: Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted
when the subquery follows =, !=, <, <= , >, >= or when the
subquery is used as an expression.
The statement has been terminated.
0
Notez bien le "0"...
Pourquoi il me fait ça?
.
-----Message d'origine-----
Re-salut
il te faut peut etre ajouter ceci dans ta PS
Set NoCount on
car je suppose que le 0 est le nombre de ligne retournées
sais ?!
@+
Boss Hog
"Stéphane Gauthier" <NOSPAMstephane.gauthier-
in message news:a16401c47942$5111a5d0$
J'ai une requête UPDATE qui me retourne une erreur car la
sous-requête renvoit plusieurs valeurs.
Comme ce cas peut arriver, je le gère en testant le
@@ERROR après le UPDATE, mais même si la requête plante,
le @@ERROR=0...
Je ne comprends pas, surtout que cela n'arrive pas sur
tous les serveurs (essayé la requête sur plusieurs), même
si ils ont la même version: SQLServer 2000 SP3a sur Win2k.
Je mets ci dessous la requête que j'ai:
UPDATE SMART.DBO.TRT_CUSTOMERS
SET
FOLDER_ID=(SELECT S._SITE_ID
FROM SMART.DBO.SITE S , SMART.DBO.RHOCUSCO R
WHERE CUSTOMER_ID=R._RHO_CODE
AND ERP_CODE=R._ERP_CODE
AND S._INTERNID=R._INTERNID)
print @@error
Et ça donne le résultat:
Server: Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted
when the subquery follows =, !=, <, <= , >, >= or when the
subquery is used as an expression.
The statement has been terminated.
0
Notez bien le "0"...
Pourquoi il me fait ça?
.
-----Message d'origine-----
Salut
/*
Si CUSTOMER_ID est est un param ou une variable il manque
sinon il manque l'alias Exemple Alias.CUSTOMER_ID
idem pour ERP_CODE
*/
UPDATE SMART.DBO.TRT_CUSTOMERS
SET
FOLDER_ID=(SELECT S._SITE_ID
FROM SMART.DBO.SITE S , SMART.DBO.RHOCUSCO R
WHERE CUSTOMER_ID=R._RHO_CODE
AND ERP_CODE=R._ERP_CODE
AND S._INTERNID=R._INTERNID)
print @@error
Boss Hog
@+
"Stéphane Gauthier" <NOSPAMstephane.gauthier-
in message news:a16401c47942$5111a5d0$
J'ai une requête UPDATE qui me retourne une erreur car la
sous-requête renvoit plusieurs valeurs.
Comme ce cas peut arriver, je le gère en testant le
@@ERROR après le UPDATE, mais même si la requête plante,
le @@ERROR=0...
Je ne comprends pas, surtout que cela n'arrive pas sur
tous les serveurs (essayé la requête sur plusieurs), même
si ils ont la même version: SQLServer 2000 SP3a sur Win2k.
Je mets ci dessous la requête que j'ai:
UPDATE SMART.DBO.TRT_CUSTOMERS
SET
FOLDER_ID=(SELECT S._SITE_ID
FROM SMART.DBO.SITE S , SMART.DBO.RHOCUSCO R
WHERE CUSTOMER_ID=R._RHO_CODE
AND ERP_CODE=R._ERP_CODE
AND S._INTERNID=R._INTERNID)
print @@error
Et ça donne le résultat:
Server: Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted
when the subquery follows =, !=, <, <= , >, >= or when the
subquery is used as an expression.
The statement has been terminated.
0
Notez bien le "0"...
Pourquoi il me fait ça?
.
-----Message d'origine-----
Salut
/*
Si CUSTOMER_ID est est un param ou une variable il manque
sinon il manque l'alias Exemple Alias.CUSTOMER_ID
idem pour ERP_CODE
*/
UPDATE SMART.DBO.TRT_CUSTOMERS
SET
FOLDER_ID=(SELECT S._SITE_ID
FROM SMART.DBO.SITE S , SMART.DBO.RHOCUSCO R
WHERE CUSTOMER_ID=R._RHO_CODE
AND ERP_CODE=R._ERP_CODE
AND S._INTERNID=R._INTERNID)
print @@error
Boss Hog
@+
"Stéphane Gauthier" <NOSPAMstephane.gauthier-
in message news:a16401c47942$5111a5d0$a301280a@phx.gbl...
J'ai une requête UPDATE qui me retourne une erreur car la
sous-requête renvoit plusieurs valeurs.
Comme ce cas peut arriver, je le gère en testant le
@@ERROR après le UPDATE, mais même si la requête plante,
le @@ERROR=0...
Je ne comprends pas, surtout que cela n'arrive pas sur
tous les serveurs (essayé la requête sur plusieurs), même
si ils ont la même version: SQLServer 2000 SP3a sur Win2k.
Je mets ci dessous la requête que j'ai:
UPDATE SMART.DBO.TRT_CUSTOMERS
SET
FOLDER_ID=(SELECT S._SITE_ID
FROM SMART.DBO.SITE S , SMART.DBO.RHOCUSCO R
WHERE CUSTOMER_ID=R._RHO_CODE
AND ERP_CODE=R._ERP_CODE
AND S._INTERNID=R._INTERNID)
print @@error
Et ça donne le résultat:
Server: Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted
when the subquery follows =, !=, <, <= , >, >= or when the
subquery is used as an expression.
The statement has been terminated.
0
Notez bien le "0"...
Pourquoi il me fait ça?
.
-----Message d'origine-----
Salut
/*
Si CUSTOMER_ID est est un param ou une variable il manque
sinon il manque l'alias Exemple Alias.CUSTOMER_ID
idem pour ERP_CODE
*/
UPDATE SMART.DBO.TRT_CUSTOMERS
SET
FOLDER_ID=(SELECT S._SITE_ID
FROM SMART.DBO.SITE S , SMART.DBO.RHOCUSCO R
WHERE CUSTOMER_ID=R._RHO_CODE
AND ERP_CODE=R._ERP_CODE
AND S._INTERNID=R._INTERNID)
print @@error
Boss Hog
@+
"Stéphane Gauthier" <NOSPAMstephane.gauthier-
in message news:a16401c47942$5111a5d0$
J'ai une requête UPDATE qui me retourne une erreur car la
sous-requête renvoit plusieurs valeurs.
Comme ce cas peut arriver, je le gère en testant le
@@ERROR après le UPDATE, mais même si la requête plante,
le @@ERROR=0...
Je ne comprends pas, surtout que cela n'arrive pas sur
tous les serveurs (essayé la requête sur plusieurs), même
si ils ont la même version: SQLServer 2000 SP3a sur Win2k.
Je mets ci dessous la requête que j'ai:
UPDATE SMART.DBO.TRT_CUSTOMERS
SET
FOLDER_ID=(SELECT S._SITE_ID
FROM SMART.DBO.SITE S , SMART.DBO.RHOCUSCO R
WHERE CUSTOMER_ID=R._RHO_CODE
AND ERP_CODE=R._ERP_CODE
AND S._INTERNID=R._INTERNID)
print @@error
Et ça donne le résultat:
Server: Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted
when the subquery follows =, !=, <, <= , >, >= or when the
subquery is used as an expression.
The statement has been terminated.
0
Notez bien le "0"...
Pourquoi il me fait ça?
.
J'ai une requête UPDATE qui me retourne une erreur car la
sous-requête renvoit plusieurs valeurs.
Comme ce cas peut arriver, je le gère en testant le
@@ERROR après le UPDATE, mais même si la requête plante,
le @@ERROR=0...
Je ne comprends pas, surtout que cela n'arrive pas sur
tous les serveurs (essayé la requête sur plusieurs), même
si ils ont la même version: SQLServer 2000 SP3a sur Win2k.
Je mets ci dessous la requête que j'ai:
UPDATE SMART.DBO.TRT_CUSTOMERS
SET
FOLDER_ID=(SELECT S._SITE_ID
FROM SMART.DBO.SITE S , SMART.DBO.RHOCUSCO R
WHERE CUSTOMER_ID=R._RHO_CODE
AND ERP_CODE=R._ERP_CODE
AND S._INTERNID=R._INTERNID)
print @@error
Et ça donne le résultat:
Server: Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted
when the subquery follows =, !=, <, <= , >, >= or when the
subquery is used as an expression.
The statement has been terminated.
0
Notez bien le "0"...
Pourquoi il me fait ça?
J'ai une requête UPDATE qui me retourne une erreur car la
sous-requête renvoit plusieurs valeurs.
Comme ce cas peut arriver, je le gère en testant le
@@ERROR après le UPDATE, mais même si la requête plante,
le @@ERROR=0...
Je ne comprends pas, surtout que cela n'arrive pas sur
tous les serveurs (essayé la requête sur plusieurs), même
si ils ont la même version: SQLServer 2000 SP3a sur Win2k.
Je mets ci dessous la requête que j'ai:
UPDATE SMART.DBO.TRT_CUSTOMERS
SET
FOLDER_ID=(SELECT S._SITE_ID
FROM SMART.DBO.SITE S , SMART.DBO.RHOCUSCO R
WHERE CUSTOMER_ID=R._RHO_CODE
AND ERP_CODE=R._ERP_CODE
AND S._INTERNID=R._INTERNID)
print @@error
Et ça donne le résultat:
Server: Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted
when the subquery follows =, !=, <, <= , >, >= or when the
subquery is used as an expression.
The statement has been terminated.
0
Notez bien le "0"...
Pourquoi il me fait ça?
J'ai une requête UPDATE qui me retourne une erreur car la
sous-requête renvoit plusieurs valeurs.
Comme ce cas peut arriver, je le gère en testant le
@@ERROR après le UPDATE, mais même si la requête plante,
le @@ERROR=0...
Je ne comprends pas, surtout que cela n'arrive pas sur
tous les serveurs (essayé la requête sur plusieurs), même
si ils ont la même version: SQLServer 2000 SP3a sur Win2k.
Je mets ci dessous la requête que j'ai:
UPDATE SMART.DBO.TRT_CUSTOMERS
SET
FOLDER_ID=(SELECT S._SITE_ID
FROM SMART.DBO.SITE S , SMART.DBO.RHOCUSCO R
WHERE CUSTOMER_ID=R._RHO_CODE
AND ERP_CODE=R._ERP_CODE
AND S._INTERNID=R._INTERNID)
print @@error
Et ça donne le résultat:
Server: Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted
when the subquery follows =, !=, <, <= , >, >= or when the
subquery is used as an expression.
The statement has been terminated.
0
Notez bien le "0"...
Pourquoi il me fait ça?
-----Message d'origine-----
essaye :
UPDATE SMART.DBO.TRT_CUSTOMERS
SET FOLDER_ID=(SELECT S._SITE_ID
FROM SMART.DBO.SITE S
INNER JOIN SMART.DBO.RHOCUSCO R
ON ?.CUSTOMER_ID = R._RHO_CODE
AND ?.ERP_CODE=R._ERP_CODE
IF @@ERROR <> 0
PRINT 'erreur'
ELSE
PRINT 'OK'
Stéphane Gauthier a écrit:J'ai une requête UPDATE qui me retourne une erreur car
sous-requête renvoit plusieurs valeurs.
Comme ce cas peut arriver, je le gère en testant le
@@ERROR après le UPDATE, mais même si la requête
le @@ERROR=0...
Je ne comprends pas, surtout que cela n'arrive pas sur
tous les serveurs (essayé la requête sur plusieurs),
si ils ont la même version: SQLServer 2000 SP3a sur
Je mets ci dessous la requête que j'ai:
UPDATE SMART.DBO.TRT_CUSTOMERS
SET
FOLDER_ID=(SELECT S._SITE_ID
FROM SMART.DBO.SITE S , SMART.DBO.RHOCUSCO R
WHERE CUSTOMER_ID=R._RHO_CODE
AND ERP_CODE=R._ERP_CODE
AND S._INTERNID=R._INTERNID)
print @@error
Et ça donne le résultat:
Server: Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not
when the subquery follows =, !=, <, <= , >, >= or when
subquery is used as an expression.
The statement has been terminated.
0
Notez bien le "0"...
Pourquoi il me fait ça?
il t'envoie d'abord le message d'erreur du select en
nouvelle commande PRINT qui elle remet @@error à zéro. Il
de @@Error remise à zéro.
Il suffit de savoir gérer les erreurs...
A lire :
http://sqlpro.developpez.com/TransactSQL/SQL_MSTransactSQL
A +
--
Frédéric BROUARD, MVP SQL Server. Expert SQL /
Livre SQL - col. Référence :
Le site du SQL, pour débutants et pros :
************************ www.datasapiens.com
.
-----Message d'origine-----
essaye :
UPDATE SMART.DBO.TRT_CUSTOMERS
SET FOLDER_ID=(SELECT S._SITE_ID
FROM SMART.DBO.SITE S
INNER JOIN SMART.DBO.RHOCUSCO R
ON ?.CUSTOMER_ID = R._RHO_CODE
AND ?.ERP_CODE=R._ERP_CODE
IF @@ERROR <> 0
PRINT 'erreur'
ELSE
PRINT 'OK'
Stéphane Gauthier a écrit:
J'ai une requête UPDATE qui me retourne une erreur car
sous-requête renvoit plusieurs valeurs.
Comme ce cas peut arriver, je le gère en testant le
@@ERROR après le UPDATE, mais même si la requête
le @@ERROR=0...
Je ne comprends pas, surtout que cela n'arrive pas sur
tous les serveurs (essayé la requête sur plusieurs),
si ils ont la même version: SQLServer 2000 SP3a sur
Je mets ci dessous la requête que j'ai:
UPDATE SMART.DBO.TRT_CUSTOMERS
SET
FOLDER_ID=(SELECT S._SITE_ID
FROM SMART.DBO.SITE S , SMART.DBO.RHOCUSCO R
WHERE CUSTOMER_ID=R._RHO_CODE
AND ERP_CODE=R._ERP_CODE
AND S._INTERNID=R._INTERNID)
print @@error
Et ça donne le résultat:
Server: Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not
when the subquery follows =, !=, <, <= , >, >= or when
subquery is used as an expression.
The statement has been terminated.
0
Notez bien le "0"...
Pourquoi il me fait ça?
il t'envoie d'abord le message d'erreur du select en
nouvelle commande PRINT qui elle remet @@error à zéro. Il
de @@Error remise à zéro.
Il suffit de savoir gérer les erreurs...
A lire :
http://sqlpro.developpez.com/TransactSQL/SQL_MSTransactSQL
A +
--
Frédéric BROUARD, MVP SQL Server. Expert SQL /
Livre SQL - col. Référence :
Le site du SQL, pour débutants et pros :
************************ www.datasapiens.com
.
-----Message d'origine-----
essaye :
UPDATE SMART.DBO.TRT_CUSTOMERS
SET FOLDER_ID=(SELECT S._SITE_ID
FROM SMART.DBO.SITE S
INNER JOIN SMART.DBO.RHOCUSCO R
ON ?.CUSTOMER_ID = R._RHO_CODE
AND ?.ERP_CODE=R._ERP_CODE
IF @@ERROR <> 0
PRINT 'erreur'
ELSE
PRINT 'OK'
Stéphane Gauthier a écrit:J'ai une requête UPDATE qui me retourne une erreur car
sous-requête renvoit plusieurs valeurs.
Comme ce cas peut arriver, je le gère en testant le
@@ERROR après le UPDATE, mais même si la requête
le @@ERROR=0...
Je ne comprends pas, surtout que cela n'arrive pas sur
tous les serveurs (essayé la requête sur plusieurs),
si ils ont la même version: SQLServer 2000 SP3a sur
Je mets ci dessous la requête que j'ai:
UPDATE SMART.DBO.TRT_CUSTOMERS
SET
FOLDER_ID=(SELECT S._SITE_ID
FROM SMART.DBO.SITE S , SMART.DBO.RHOCUSCO R
WHERE CUSTOMER_ID=R._RHO_CODE
AND ERP_CODE=R._ERP_CODE
AND S._INTERNID=R._INTERNID)
print @@error
Et ça donne le résultat:
Server: Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not
when the subquery follows =, !=, <, <= , >, >= or when
subquery is used as an expression.
The statement has been terminated.
0
Notez bien le "0"...
Pourquoi il me fait ça?
il t'envoie d'abord le message d'erreur du select en
nouvelle commande PRINT qui elle remet @@error à zéro. Il
de @@Error remise à zéro.
Il suffit de savoir gérer les erreurs...
A lire :
http://sqlpro.developpez.com/TransactSQL/SQL_MSTransactSQL
A +
--
Frédéric BROUARD, MVP SQL Server. Expert SQL /
Livre SQL - col. Référence :
Le site du SQL, pour débutants et pros :
************************ www.datasapiens.com
.
Non, ça marche pas, car à la place des "?" il faudrait que
je mette la table TRT_CUSTOMERS sur laquelle est fait
l'update
Mais si je la mets, il ne s'agit plus de la même table
pour SQL...-----Message d'origine-----
essaye :
UPDATE SMART.DBO.TRT_CUSTOMERS
SET FOLDER_ID=(SELECT S._SITE_ID
FROM SMART.DBO.SITE S
INNER JOIN SMART.DBO.RHOCUSCO R
ON ?.CUSTOMER_ID = R._RHO_CODE
AND ?.ERP_CODE=R._ERP_CODE
IF @@ERROR <> 0
PRINT 'erreur'
ELSE
PRINT 'OK'
Stéphane Gauthier a écrit:J'ai une requête UPDATE qui me retourne une erreur car
lasous-requête renvoit plusieurs valeurs.
Comme ce cas peut arriver, je le gère en testant le
@@ERROR après le UPDATE, mais même si la requête
plante,le @@ERROR=0...
Je ne comprends pas, surtout que cela n'arrive pas sur
tous les serveurs (essayé la requête sur plusieurs),
mêmesi ils ont la même version: SQLServer 2000 SP3a sur
Win2k.Je mets ci dessous la requête que j'ai:
UPDATE SMART.DBO.TRT_CUSTOMERS
SET
FOLDER_ID=(SELECT S._SITE_ID
FROM SMART.DBO.SITE S , SMART.DBO.RHOCUSCO R
WHERE CUSTOMER_ID=R._RHO_CODE
AND ERP_CODE=R._ERP_CODE
AND S._INTERNID=R._INTERNID)
print @@error
Et ça donne le résultat:
Server: Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not
permittedwhen the subquery follows =, !=, <, <= , >, >= or when
thesubquery is used as an expression.
The statement has been terminated.
0
Notez bien le "0"...
Pourquoi il me fait ça?
il t'envoie d'abord le message d'erreur du select en
cause. Puis tu lance unenouvelle commande PRINT qui elle remet @@error à zéro. Il
imprime donc la valeurde @@Error remise à zéro.
Il suffit de savoir gérer les erreurs...
A lire :
http://sqlpro.developpez.com/TransactSQL/SQL_MSTransactSQL
.html#4.3A +
--
Frédéric BROUARD, MVP SQL Server. Expert SQL /
spécialiste Delphi, webLivre SQL - col. Référence :
http://sqlpro.developpez.com/bookSQL.htmlLe site du SQL, pour débutants et pros :
http://sqlpro.developpez.com************************ www.datasapiens.com
*************************.
Non, ça marche pas, car à la place des "?" il faudrait que
je mette la table TRT_CUSTOMERS sur laquelle est fait
l'update
Mais si je la mets, il ne s'agit plus de la même table
pour SQL...
-----Message d'origine-----
essaye :
UPDATE SMART.DBO.TRT_CUSTOMERS
SET FOLDER_ID=(SELECT S._SITE_ID
FROM SMART.DBO.SITE S
INNER JOIN SMART.DBO.RHOCUSCO R
ON ?.CUSTOMER_ID = R._RHO_CODE
AND ?.ERP_CODE=R._ERP_CODE
IF @@ERROR <> 0
PRINT 'erreur'
ELSE
PRINT 'OK'
Stéphane Gauthier a écrit:
J'ai une requête UPDATE qui me retourne une erreur car
la
sous-requête renvoit plusieurs valeurs.
Comme ce cas peut arriver, je le gère en testant le
@@ERROR après le UPDATE, mais même si la requête
plante,
le @@ERROR=0...
Je ne comprends pas, surtout que cela n'arrive pas sur
tous les serveurs (essayé la requête sur plusieurs),
même
si ils ont la même version: SQLServer 2000 SP3a sur
Win2k.
Je mets ci dessous la requête que j'ai:
UPDATE SMART.DBO.TRT_CUSTOMERS
SET
FOLDER_ID=(SELECT S._SITE_ID
FROM SMART.DBO.SITE S , SMART.DBO.RHOCUSCO R
WHERE CUSTOMER_ID=R._RHO_CODE
AND ERP_CODE=R._ERP_CODE
AND S._INTERNID=R._INTERNID)
print @@error
Et ça donne le résultat:
Server: Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not
permitted
when the subquery follows =, !=, <, <= , >, >= or when
the
subquery is used as an expression.
The statement has been terminated.
0
Notez bien le "0"...
Pourquoi il me fait ça?
il t'envoie d'abord le message d'erreur du select en
cause. Puis tu lance une
nouvelle commande PRINT qui elle remet @@error à zéro. Il
imprime donc la valeur
de @@Error remise à zéro.
Il suffit de savoir gérer les erreurs...
A lire :
http://sqlpro.developpez.com/TransactSQL/SQL_MSTransactSQL
.html#4.3
A +
--
Frédéric BROUARD, MVP SQL Server. Expert SQL /
spécialiste Delphi, web
Livre SQL - col. Référence :
http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros :
http://sqlpro.developpez.com
************************ www.datasapiens.com
*************************
.
Non, ça marche pas, car à la place des "?" il faudrait que
je mette la table TRT_CUSTOMERS sur laquelle est fait
l'update
Mais si je la mets, il ne s'agit plus de la même table
pour SQL...-----Message d'origine-----
essaye :
UPDATE SMART.DBO.TRT_CUSTOMERS
SET FOLDER_ID=(SELECT S._SITE_ID
FROM SMART.DBO.SITE S
INNER JOIN SMART.DBO.RHOCUSCO R
ON ?.CUSTOMER_ID = R._RHO_CODE
AND ?.ERP_CODE=R._ERP_CODE
IF @@ERROR <> 0
PRINT 'erreur'
ELSE
PRINT 'OK'
Stéphane Gauthier a écrit:J'ai une requête UPDATE qui me retourne une erreur car
lasous-requête renvoit plusieurs valeurs.
Comme ce cas peut arriver, je le gère en testant le
@@ERROR après le UPDATE, mais même si la requête
plante,le @@ERROR=0...
Je ne comprends pas, surtout que cela n'arrive pas sur
tous les serveurs (essayé la requête sur plusieurs),
mêmesi ils ont la même version: SQLServer 2000 SP3a sur
Win2k.Je mets ci dessous la requête que j'ai:
UPDATE SMART.DBO.TRT_CUSTOMERS
SET
FOLDER_ID=(SELECT S._SITE_ID
FROM SMART.DBO.SITE S , SMART.DBO.RHOCUSCO R
WHERE CUSTOMER_ID=R._RHO_CODE
AND ERP_CODE=R._ERP_CODE
AND S._INTERNID=R._INTERNID)
print @@error
Et ça donne le résultat:
Server: Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not
permittedwhen the subquery follows =, !=, <, <= , >, >= or when
thesubquery is used as an expression.
The statement has been terminated.
0
Notez bien le "0"...
Pourquoi il me fait ça?
il t'envoie d'abord le message d'erreur du select en
cause. Puis tu lance unenouvelle commande PRINT qui elle remet @@error à zéro. Il
imprime donc la valeurde @@Error remise à zéro.
Il suffit de savoir gérer les erreurs...
A lire :
http://sqlpro.developpez.com/TransactSQL/SQL_MSTransactSQL
.html#4.3A +
--
Frédéric BROUARD, MVP SQL Server. Expert SQL /
spécialiste Delphi, webLivre SQL - col. Référence :
http://sqlpro.developpez.com/bookSQL.htmlLe site du SQL, pour débutants et pros :
http://sqlpro.developpez.com************************ www.datasapiens.com
*************************.