Как использовать Подготовленный оператор для запросов Microsoft SQL Xpath в Java - PullRequest
1 голос
/ 16 мая 2019

Я с трудом пытаюсь использовать подготовленный оператор для приведенного ниже запроса sql xml xpath в java.

SELECT * FROM dbo.EMPLOYEE_DTLS WHERE EMPLOYEE_DTLS.EMP_XML.exist('//emp/empId[text()[1]=?]')= 1 AND (EMPLOYEE_DTLS.EMP_XML.exist('//emp/designationList/designation[contains(.,?)]')= 1 OR EMPLOYEE_DTLS.EMP_XML.exist('//emp/designationList/designation[contains(.,?)]')= 1 OR 1!=1)

Я хотел бы установить значения для всех мест с? условное обозначение. С тех пор как? находится внутри одинарных кавычек в xpath, он не считается заполнителем, и я не могу установить значения. Может ли кто-нибудь помочь мне в этом. Любая помощь с благодарностью.

1 Ответ

1 голос
/ 17 мая 2019

Непосредственное указание параметризованного значения в выражении XPath (или XQuery) невозможно. Однако вы можете обратиться к переменной с помощью функции sql:variable("variable_name") в выражениях XPath (XQuery).

Так что у вас будет такой скрипт:

DECLARE @some_variable NVARCHAR(128)=?; -- specify the parameter here
SELECT * 
FROM dbo.EMPLOYEE_DTLS 
WHERE EMPLOYEE_DTLS.EMP_XML.exist('//emp/empId[text()[1]=sql:variable("@some_variable")]')=1 -- etc.

Документацию по функции sql:variable() можно найти здесь *

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