debugsqlModerate
Why am I getting the error "non-boolean type specified in a context where a condition is expected" for this request?
Viewed 0 times
thiswhyerrortheconditionbooleannonwhererequestexpected
Problem
I am getting this error :
for this request :
The request triggering the error is the last one :
What could be the cause of this error ?
"Error 102 : non-boolean type specified in a context where a condition is expected"for this request :
DECLARE @num_dossiers TABLE (num_dossier INT,indice NVARCHAR(3))
insert into @num_dossiers
select num_dossier,indice from dossier where num_sec=57
delete from constitue where (num_dossier,indice) in select (num_dossier,indice) from @num_dossiersThe request triggering the error is the last one :
delete from constitue where (num_dossier,indice) in select (num_dossier,indice) from @num_dossiersWhat could be the cause of this error ?
Solution
SQL Server doesn't support a multi-column IN clause (unlike Oracle).
This can be rewritten as a EXISTS:
delete
from constitue
where (num_dossier,indice) in select (num_dossier,indice) from @num_dossiersThis can be rewritten as a EXISTS:
DELETE c
FROM constitue c
WHERE EXISTS
(SELECT 1 FROM @num_dossiers nd WHERE n.num_dossier = c.num_dossier AND n.indice = c.indice);Code Snippets
delete
from constitue
where (num_dossier,indice) in select (num_dossier,indice) from @num_dossiersDELETE c
FROM constitue c
WHERE EXISTS
(SELECT 1 FROM @num_dossiers nd WHERE n.num_dossier = c.num_dossier AND n.indice = c.indice);Context
StackExchange Database Administrators Q#234938, answer score: 16
Revisions (0)
No revisions yet.