Я уверен, что это очень простой ответ, которого я не нахожу ... У меня есть простая иерархия в базе данных, где каждая строка имеет ParentId. Если ParentId IS NULL
, то это корневой элемент. У меня есть хранимая процедура:
CREATE PROCEDURE GetByParent @parentId int
AS BEGIN SELECT * FROM TABLE1 WHERE ParentId = @parentId END
Хорошо работает, если я отправляю целое число, но если я отправляю NULL
, оно становится ParentId = NULL
, что не работает в ANSI. Я знаю, что есть COALESCE(@parentId, ParentId)
, но это возвращает все строки, когда @parentId IS NULL
. Я могу сделать оператор IF ELSE и скопировать запрос (один с = @parentId
, а другой с IS NULL
), но я уверен, что есть лучший способ.