mun*_*yul 5 xml sql sql-server sqlxml
我想知道,如何将 XML 内容从任意文件加载到局部变量中?
这适用于固定文件:
DECLARE @xml XML
SET @xml =
(
SELECT *
FROM OPENROWSET(BULK 'C:\data.xml', SINGLE_BLOB) AS data
)
Run Code Online (Sandbox Code Playgroud)
但是,我想从任何任意文件加载数据。
这不起作用(因为 BULK 似乎只支持 String 参数)
DECLARE @file NVARCHAR(MAX) = 'C:\data.xml'
DECLARE @xml XML
SET @xml =
(
SELECT *
FROM OPENROWSET(BULK @file, SINGLE_BLOB) AS data
)
Run Code Online (Sandbox Code Playgroud)
我还尝试了以下操作(没有成功,因为执行 EXEC 时局部变量(@xml)似乎超出了范围):
DECLARE @file NVARCHAR(MAX) = 'C:\data.xml'
DECLARE @xml XML
DECLARE @bulk NVARCHAR(MAX) = 'SET @xml = (SELECT * FROM OPENROWSET(BULK ''' + @file + ''', SINGLE_BLOB) AS data)'
EXEC (@bulk)
Run Code Online (Sandbox Code Playgroud)
我猜我需要使用临时表,但是如何使用?
找到了解决办法:
DECLARE @results table (result XML)
DECLARE @sqlstmt NVARCHAR(MAX)
SET @sqlstmt= 'SELECT * FROM OPENROWSET ( BULK ''' + @file + ''', SINGLE_CLOB) AS xmlData'
INSERT INTO @results EXEC (@sqlstmt)
SELECT @xml = result FROM @results
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10648 次 |
| 最近记录: |