XPath의 일부로 매개 변수 값을 사용하는 SQL 서버에 매개 변수화 된 쿼리를 작성하려고하지만 예상대로 작동하지 않습니다. 오류에SQL 서버에서 매개 변수화 된 XPath 쿼리는 어떻게 작성합니까?
create table ##example (xmltest xml)
declare @LanguagePath varchar(75)
set @LanguagePath = '(/languages/language[@id="en-US"])[1]'
insert into ##example
values ('<languages>
<language id="en-US">c</language>
<language id="es-ES">c</language>
</languages>')
insert into ##example
values ('<languages>
<language id="en-US">b</language>
<language id="es-ES">b</language>
</languages>')
insert into ##example
values ('<languages>
<language id="en-US">a</language>
<language id="es-ES">a</language>
</languages>')
--This is a working statement:
--select * from ##example
--order by xmltest.value('(/languages/language[@id="en-US"])[1]', 'varchar')
declare @SQL nvarchar(4000)
set @SQL = '
select * from ##example
order by xmltest.value(@LanguagePath1, ''varchar'')
'
exec sp_executesql @SQL, N'@LanguagePath1 varchar(75)', @LanguagePath1 = @LanguagePath;
drop table ##example
이 코드 결과 : 여기 내 샘플입니다 xml 데이터 형식 방법 "값"의 인수 (1)는 리터럴 문자열이어야합니다.
어떻게 작동시킬 수 있습니까? 내 xpath 쿼리를 SQL injection으로부터 안전하게하려고 노력하고 싶습니다.
달콤한 감사합니다. 그게 정확히 내가 찾고 있던 것이 었습니다. –
Saulius, 내 솔루션은 왜 작동합니까? http://goo.gl/pI4Ap – ekkis