Разница SQL между параметром и значением - PullRequest
0 голосов
/ 15 февраля 2011

Извините, если мой заголовок немного вводил в заблуждение, но я не совсем уверен, как его сформулировать.

Почему существует разница между двумя приведенными ниже утверждениями:

SELECT * 
FROM tbl1 LEFT OUTER JOIN 
      tbl2 ON tbl1.num = tbl2.tbl1Num LEFT OUTER JOIN
      tbl3 ON tbl2.num = tbl3.tbl2Num
WHERE tbl2.intNum = 123 OR 123 = -1

И

DECLARE @intNum int = 123
SELECT * 
FROM tbl1 LEFT OUTER JOIN 
      tbl2 ON tbl1.num = tbl2.tbl1Num LEFT OUTER JOIN
      tbl3 ON tbl2.num = tbl3.tbl2Num
WHERE tbl2.intNum = @intNum OR @intNum = -1

Мы запустили два вышеупомянутых запроса, и это фактически дало нам разные результаты? Мы решили сменить его на Союз, чтобы решить эту проблему, но мне бы очень хотелось понять, почему это произошло.

Заранее спасибо!

1 Ответ

2 голосов
/ 15 февраля 2011

Вам не хватает типа параметра:

declare @intNum int = 123
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...