XQuery [proposal.Data.value()]:'@'附近有语法错误。 ']' 是必须的

时间:2018-03-29 08:35:44

标签: sql sql-server xml coalesce

我有一个查询,如下所示无法将参数传递给xml列

<div class="flexItem">
     <ui-textbox label="test" v-model="prospect.monthly_cost"
         name="testmonth"
         v-validate="`${vRequired}|decimal`"
         v-on:keypress="isNumber(event)"
         :invalid="errors.has('monthly_cost')"
         :error="errors.first('monthly_cost')"
         format="number"
     ></ui-textbox>
</div>

错误:

  

Msg 9303,Level 16,State 1,Procedure Concatenate ApprovalNumber,Line 15
  XQuery [proposal.Data.value()]:'@'附近有语法错误。 ']'是必需的。

1 个答案:

答案 0 :(得分:1)

你有一些额外的qoutes [] sql:variable() ...

这有效

DECLARE @xml XML='<root><a test="a">A</a><a test="b">B</a></root>';
DECLARE @SearchFor NVARCHAR(10)='a';
SELECT @xml.value(N'(/root/a[@test=sql:variable("@SearchFor")]/text())[1]','nvarchar(max)')

尝试将其更改为

DECLARE @xml XML='<root><a test="a">A</a><a test="b">B</a></root>';
DECLARE @SearchFor NVARCHAR(10)='a';
SELECT @xml.value(N'(/root/a[@test="sql:variable("@SearchFor")"]/text())[1]','nvarchar(max)')

...你得到了同样的错误