У меня есть таблица с названием категории. Категория столбца имеет значения, такие как «6,7,9,22,44». Я хотел бы знать, эффективен ли этот подход для SQL Server 2005 или 2008. В основном я передаю значение «6,7,9,22,44» в хранимую процедуру. Я открытые ссылки/предложения для лучшего подхода.Dynamic sql - Это хороший подход?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~ Примечание. Я должен уточнить, что я поддерживаю приложение, написанное кем-то другим, а столбец категории уже имеет значения, разделенные запятой. Я бы поместил данные в отдельную таблицу, но я не смогу это сделать в краткосрочной перспективе. Что касается SQL Injection - столбец заполняется значениями, отмеченными из списка флажков. Пользователи не могут вводить или вводить какие-либо данные, которые могут повлиять на конкретный сохраненный процесс. Возможно ли использование SQL-инъекций в этом сценарии? Пожалуйста, объясните, как. Благодарю. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~
CREATE PROCEDURE [dbo].[GetCategories]
-- Add the parameter that contain the string that is passed in
@catstring varchar(300)
AS
DECLARE @SQLQuery nvarchar(500);
BEGIN
/* Build Transact-SQL String with parameter value */
SET @SQLQuery = 'select id,category from categoryTable where id in ('+ @catstring +')'
/* Execute Transact-SQL String */
EXECUTE(@SQLQuery)
END
GO
Нет. Ваш код подвержен [SQL injection] (http://bobby-tables.com/). –
Неверно хранить значения, разделенные запятыми, в столбце. –
Вы используете C# или другой язык программирования на стороне сервера? – Meryovi