使用存储过程,以便可以将输出保存在文件中或作为输出参数
Use stored procedure so that the output can be saved in a file or as an output parameter
我正在使用 SQL Server 2008。我有一个存储过程 returns XML 数据。我想使用存储过程使用 `bcp' 和 return 输出到 XML 文件或在另一个存储过程中调用存储过程并将数据存储为 XML 变量。
要将其保存到文件中,存储过程因此没有 OUTPUT 参数并且 returns 数据为 XML。
这个有效
SET @CopyXmlCmd = 'bcp "EXEC CreateXMLFileOfDatabase " queryout "' + @FileAndPath + '" -T -w -S ' + @@SERVERNAME + ' -d ' + DB_NAME()
EXEC master..XP_CMDSHELL @CopyXmlCmd
存储过程CreateXMLFileOfDatabase
没有输出或输入参数。但是我还需要让这个存储过程为此工作:
DECLARE @XmlTargetDB XML;
EXEC CreateXMLFileOfDatabase @ResultDB = @XmlTargetDB
此版本存储过程的签名是这样的:
CREATE PROCEDURE [dbo].[CreateXMLFileOfDatabase] @ResultDB XML OUTPUT
我可以 bcp
使用具有输出参数的存储过程并将结果存储到文件吗?
您可以尝试这样的操作:
我假设您的 SP 中的最终命令是 SELECT TheXml;
在这种情况下,您可以声明一个配件 table 并插入结果:
DECLARE @tbl TABLE(MyXMLColumn XML);
INSERT INTO @tbl(MyXMLColumn)
EXEC YourProcedure;
--从这个table你可以设置值到一个XML变量:
DECLARE @ResultXML XML;
SELECT @ResultXML=MyXMLColumn FROM @tbl;
更新:示例
试试这个:
CREATE PROCEDURE dbo.TestOutputXML
AS
BEGIN
SELECT CAST('<root>test</root>' AS XML) AS Test
END
GO
DECLARE @tbl TABLE(MyResult XML);
INSERT INTO @tbl(MyResult)
EXEC dbo.TestOutputXML;
DECLARE @MyXMLVariable XML=(SELECT TOP 1 MyResult FROM @tbl);
SELECT @MyXMLVariable;
GO
DROP PROCEDURE dbo.TestOutputXML;
我正在使用 SQL Server 2008。我有一个存储过程 returns XML 数据。我想使用存储过程使用 `bcp' 和 return 输出到 XML 文件或在另一个存储过程中调用存储过程并将数据存储为 XML 变量。
要将其保存到文件中,存储过程因此没有 OUTPUT 参数并且 returns 数据为 XML。
这个有效
SET @CopyXmlCmd = 'bcp "EXEC CreateXMLFileOfDatabase " queryout "' + @FileAndPath + '" -T -w -S ' + @@SERVERNAME + ' -d ' + DB_NAME()
EXEC master..XP_CMDSHELL @CopyXmlCmd
存储过程CreateXMLFileOfDatabase
没有输出或输入参数。但是我还需要让这个存储过程为此工作:
DECLARE @XmlTargetDB XML;
EXEC CreateXMLFileOfDatabase @ResultDB = @XmlTargetDB
此版本存储过程的签名是这样的:
CREATE PROCEDURE [dbo].[CreateXMLFileOfDatabase] @ResultDB XML OUTPUT
我可以 bcp
使用具有输出参数的存储过程并将结果存储到文件吗?
您可以尝试这样的操作:
我假设您的 SP 中的最终命令是 SELECT TheXml;
在这种情况下,您可以声明一个配件 table 并插入结果:
DECLARE @tbl TABLE(MyXMLColumn XML);
INSERT INTO @tbl(MyXMLColumn)
EXEC YourProcedure;
--从这个table你可以设置值到一个XML变量:
DECLARE @ResultXML XML;
SELECT @ResultXML=MyXMLColumn FROM @tbl;
更新:示例
试试这个:
CREATE PROCEDURE dbo.TestOutputXML
AS
BEGIN
SELECT CAST('<root>test</root>' AS XML) AS Test
END
GO
DECLARE @tbl TABLE(MyResult XML);
INSERT INTO @tbl(MyResult)
EXEC dbo.TestOutputXML;
DECLARE @MyXMLVariable XML=(SELECT TOP 1 MyResult FROM @tbl);
SELECT @MyXMLVariable;
GO
DROP PROCEDURE dbo.TestOutputXML;