sco*_*192 4 xml t-sql variables syntax sqlcmd
我有一个XML文件,我想用它来将静态数据加载到我的数据库中.最好,我想使用sqlcmd":r"进行文本替换,以便在我的sql脚本中将xml视为硬编码数据.
使用硬编码数据,我的脚本可以工作
--Working Code
DECLARE @XML XML
SET @XML = '
<clients>
<client>
<ClientNumber>ClientA</ClientNumber>
</client>
<client>
<ClientNumber>ClientB</ClientNumber>
</client>
</clients>
'
Run Code Online (Sandbox Code Playgroud)
我想做的是这样的事情:
DECLARE @XML XML
SET @XML = '
:r .\ClientData.xml
'
Run Code Online (Sandbox Code Playgroud)
ClientData.xml的内容与先前硬编码的xml文本相同.问题是sqlcmd解析器没有在测试替换上获取,而只是将值':r.\ ClientData.xml'放在我的xml变量中.
如果我尝试删除抽搐,我会收到以下错误:
Incorrect syntax near '<'.
Run Code Online (Sandbox Code Playgroud)
有什么办法可以强制sqlcmd在内部抽搐时执行,所以文本替换正确吗?
好的,这是我的黑客......
:setvar XMLDATA "'"
declare @mydata xml =
$(XMLDATA)
:r "Data.xml"
$(XMLDATA)
Run Code Online (Sandbox Code Playgroud)
基本上只是通过参数化单引号来解决解析器.
这很难看,但它允许我拥有一个有效的xml文件.