Я пытаюсь изменить хранимую процедуру, используемую на странице ASP.NET.
По умолчанию хранимая процедура возвращает все данные, которые могут быть чрезмерными для сотрудников на предприятии.
Я хочу добавить пункт раскрывающегося меню для имени столбца и текстовое поле для значения, чтобы наши сотрудники могли искать данные для своих конкретных элементов.
Я хотел бы добавить возможность передачи имени столбца и значения столбца для поиска, аналогично следующему:
DECLARE @colName nVarChar(50), @colValue nVarChar(50)
SET @colName='EmployeeID'
SET @colValue='007135'
SELECT Column1, Column2, Column3, Column4, Column5, Column6, Column7
FROM viewNum1
WHERE ((@colName IS NULL) OR (@colValue IS NULL) OR ('['+@colName+']'=@colValue))
Если все значения переданы (@colValue
и @colName
), возвращаются все записи; однако, если я попытаюсь указать, что @colName
= EmployeeID и @colValue
= '007135' (значение, которое существует в базе данных), никакие записи не возвращаются.
Следующая проблема заключается в том, что я запускаю старую базу данных SQL Server 2000, которая не позволяет хранимой процедуре обращаться к именам столбцов таблицы, и весь метод выглядит склонным к SQL-инъекции.
Наконец, я не вижу, как привязать к этому свой элемент управления GridView
, и у меня все еще есть возможность отображать все записи.
Как мне написать такую хранимую процедуру фильтрации?