首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有参数的OPENROWSET文件进入sql

带有参数的OPENROWSET文件进入sql
EN

Stack Overflow用户
提问于 2014-10-15 21:03:26
回答 1查看 370关注 0票数 0

我正在使用Server 2008,使用下一个查询读取这个文件:

代码语言:javascript
复制
DECLARE @x xml;

SET @x = (
SELECT *
FROM OPENROWSET(BULK N'C:\Attachments\arch.xml', SINGLE_BLOB) AS [Document]
);
;WITH XMLNAMESPACES    (  'http://www.sat.gob.mx/TimbreFiscalDigital' as Timbre, 'http://www.sat.gob.mx/cfd/3' as cfdi) 
select   
TimbreUUID = Timbre.value('@UUID', 'varchar(100)') 
FROM @x.nodes('/cfdi:Comprobante/cfdi:Complemento/Timbre:TimbreFiscalDigital') a(timbre)

这个查询得到一个名为UUID的字段,这里很好,但是现在我需要它,而不是OPENROWSET (bulk 'string', SINGLE_BLOB)使用一个字符串,这使用一个参数。

如何使用参数来实现OPENROWSET?

例如:

代码语言:javascript
复制
declare @param varchar(max)='C:\Attachments\arch.xml'
SET @x = (
SELECT *
FROM OPENROWSET(BULK @param, SINGLE_BLOB) AS [Document]
);

对不起,我对网络有一些限制,所以我不能正确地使用编辑器

EN

回答 1

Stack Overflow用户

发布于 2015-02-10 15:54:52

我用下面的代码解决了这个问题:

代码语言:javascript
复制
declare @path nvarchar(max)=('C:\EME870831T20.xml')
declare @results table (x xml)
declare @sql nvarchar(max)=N'SELECT CAST(REPLACE(CAST(x AS VARCHAR(MAX)), ''encoding="utf-16"'', ''encoding="utf-8"'') AS XML) FROM OPENROWSET(BULK '''+@path+''', SINGLE_BLOB) AS T(x)'
INSERT INTO @results EXEC (@sql) ;WITH 
XMLNAMESPACES('http://www.sat.gob.mx/cfd/3' as cfdi,'http://www.sat.gob.mx/TimbreFiscalDigital' as tfd)
SELECT xmldata.value('(@UUID)', 'varchar(100)') AS item_id  
FROM @results  CROSS APPLY
x.nodes('/cfdi:Comprobante/cfdi:Complemento/tfd:TimbreFiscalDigital') AS a(xmldata);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26392072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档