Piszę SP, który akceptuje jako kolumnę parametrów do sortowania i kierunku.Dynamiczny kierunek zamówienia
Nie chcę używać dynamicznego SQL.
Problem polega na ustawieniu parametru kierunku.
Jest to kod częściowy:
SET @OrderByColumn = 'AddedDate'
SET @OrderDirection=1;
.
.
.
ORDER BY
CASE WHEN @OrderByColumn='AddedDate' THEN CONVERT(varchar(50),AddedDate)
WHEN @OrderByColumn='Visible' THEN CONVERT(varchar(2), Visible)
WHEN @OrderByColumn='AddedBy' THEN AddedBy
WHEN @OrderByColumn='Title' THEN Title
END
polecam zbieranie Patt konwersji ern dla AddDate, który upewnia się, że ciągi znaków będą sortować według daty. Wierzę, że domyślna konwersja może zmienić się wraz z ustawieniami lokalizacji. Lepiej jednoznacznie zdefiniować i być bezpiecznym. –
Czy dotyczy to niektórych innych typów? Lub po prostu DATE? – markiz
Numery również będą stanowić problem. Na przykład konwersja 10, 1 i 2 na varchar da ci rodzaj "1", "10", "2". Wyobrażam sobie, że konwertujesz Visible i AddDate na varchar, ponieważ CASE musi zwracać wszystkie tego samego typu, prawda? –