Как получить проанализированный параметр SQL в T-SQL - PullRequest
0 голосов
/ 20 октября 2011

У меня есть хранимая процедура, которая динамически генерирует оператор SQL и включает параметризованную информацию, которую клиент передает ей.

Обычно я мог бы использовать sp_executesql для прямой передачи параметров.Однако я хочу иметь возможность передать этот оператор SQL в другую хранимую процедуру общего назначения, которая используется для возврата определенной страницы данных для данного запроса.Так что нетрудно передать произвольные параметры в конец строки.

Есть ли способ, с помощью которого T-SQL может просто разрешить параметр и вернуть строку, чтобы я мог создать полнуюбез параметров строки SQL, чтобы перейти к окончательной процедуре?То есть:

-- bad
set @sql = 'select * from something where id=' + cast(@idParm as varchar(10))

-- good - but can't pass @sql to something that doesn't know about its parms
set @sql = 'select * from something where id=@idParm'
exec sp_executesql @sql,N'@idParm int',@idParm

-- what I want
set @sql = 'select * from something where id = '+
    decode_parameter('@idParm int',@idParm)

Я не могу придумать ни одной причины, по которой это не было бы совершенно безопасно для SQL-инъекций, предполагая, что в T-SQL есть API для механизма декодирования параметров.Я имею в виду, что в конце дня параметр превратится в некоторые данные, которые могут быть представлены строкой в ​​запросе, поэтому кажется неактуальным, если это происходит здесь или в конце пути.Это возможно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...