BUG: IF Statement with Two EXISTS Separated by OR ClauseID: Q106133
|
BUG# OS/2: 1795 (4.2)
NT: 544 (4.2)
If one of the SELECT statements is against an empty tableA query that
issues an IF EXISTS statement with an OR clause can process incorrectly.
The basic logic looks like:
If exists (SELECT f1 FROM table1 WHERE f1 = "z") OR
exists (SELECT f1 FROM table2 WHERE f1 = "a")
select "TRUE"
else
select "FALSE"
SQL Server is not correctly evaluating the IF statement when one or more of the tables has no rows.
This problem can be avoided by making sure that both tables contain at
least one row. An alternate method is to restructure the IF statement
to evaluate one of the EXISTS at a time. In the example given above,
it would look like the following:
If exists (SELECT f1 FROM table1 WHERE f1 = "z")
select "TRUE"
else if exists (SELECT f1 FROM table2 WHERE f1 = "a")
select "TRUE"
else
select "FALSE"
Microsoft has confirmed this to be a problem in SQL Server version 4.2 for OS/2 and Microsoft SQL Server version 4.2. We are researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.
Additional query words: transact-SQL Windows NT
Keywords : kbprg kbbug4.20 SSrvServer SSrvWinNT
Version : 4.2 | 4.2 4.2a
Platform : OS/2 WINDOWS
Issue type :
Last Reviewed: March 17, 1999