У меня есть хранимая процедура, которая получает строковый параметр "OrderByColumn" и соответственно строит динамический запрос.
Это часть моего кода хранимой процедуры:
ROW_NUMBER() OVER (ORDER BY
CASE WHEN @OrderByColumn='Date' AND @OrderDirection=0 THEN tbl_Docs.Date END ASC,
CASE WHEN @OrderByColumn='Count' AND @OrderDirection=0 THEN tbl_Docs.Count END ASC,
И в моем коде функции, которая вызывает процедуру сохранения, у меня есть:
cmd.Parameters.Add("@OrderByColumn", SqlDbType.NVarChar).Value = orderByColumn;
cmd.Parameters.Add("@OrderDirection", SqlDbType.Int).Value = orderDirection;
Пользователь устанавливает параметр OrderByColumn, щелкая заголовок столбца gridviews, чтобы не было прямого ввода данных пользователем, так как я вижу, что нет никакой возможности ввести что-либо ...
В книге они также проверяют строку orderByColumn, я не понимаю, зачем это нужно, потому что, как я заметил, пользователь не может вводить прямое выражение.
Мой вопрос:
это безопасно?
Я также читал в одной книге, что предложение ORDER BY не поддерживает использование параметров.
Что это значит?