SQL XML 附有 PDF 的输出

SQL XML Output with PDFs Attached

我编写了一个 SQL 服务器程序,它以 XML 格式导出数据。在数据库中,我还有存储为 BLOB 文件的 PDF,我需要将其与数据一起导出。导出时是否可以将它们转换为 PDF?

这真的很简单...

我假设 BLOB 位于类型 VARBINARY(MAX) 的 table 列中。将这样的列包含到 SELECT ... FOR XML PATH 中将 隐式地 为您进行转换。

在这个例子中,我使用了三个微小的二进制 BLOB,将它们放入一个 XML 变量中并重新读取它们。您的 PDF BLOB 应该没有区别:

DECLARE @tbl TABLE(ID INT,Content VARBINARY(MAX));
INSERT INTO @tbl VALUES
 (1,0x101010101010101010101)
,(2,0x110011001100110011001100)
,(3,0x111000111000111000111000);

DECLARE @xml XML=
(
    SELECT ID AS [@ID]
          ,Content
    FROM @tbl
    FOR XML PATH('myData'),ROOT('root')
);

SELECT @xml;

结果为 XML(隐式转换为 base64)

<root>
  <myData ID="1">
    <Content>AQEBAQEBAQEBAQE=</Content>
  </myData>
  <myData ID="2">
    <Content>EQARABEAEQARABEA</Content>
  </myData>
  <myData ID="3">
    <Content>ERAAERAAERAAERAA</Content>
  </myData>
</root>

现在我从 XML

读取数据
SELECT B.value('Content[1]','varbinary(max)') AS BackToVarbinary
FROM @xml.nodes('/root/myData') AS A(B)

结果

BackToVarbinary
0x0101010101010101010101
0x110011001100110011001100
0x111000111000111000111000