【问题标题】:How to use Prepared Statement for Microsoft SQL Xpath queries in java如何在 java 中为 Microsoft SQL Xpath 查询使用 Prepared Statement
【发布时间】:2019-05-16 19:38:27
【问题描述】:

我很难尝试在java 中为以下sql xml xpath 查询使用Prepared Statement。

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 的单引号内,因此它不被视为占位符,我无法设置值。有人可以帮我解决这个问题。非常感谢任何帮助。

【问题讨论】:

  • 谁能帮我解决一下。

标签: java sql-server xml xpath


【解决方案1】:

无法在 XPath(或 XQuery)表达式中直接指定参数化值。但是,您可以做的是在 XPath (XQuery) 表达式中使用 sql:variable("variable_name") 函数来引用变量。

所以你会有这样的脚本:

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() 函数的文档 → here

【讨论】:

  • @user2186831 您好,我认为您最好创建一个新问题,尽可能详细地说明您的问题。理想情况下,使用数据样本进行测试,它可以显示您遇到的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多