由于结果集的结构可能会因输入而异,因此如何将过程的结果集转换为XML而又不创建临时表?该方案必须在本地和Azure托管SQL Server数据库中都可以工作。
CREATE PROCEDURE SPSample(@Scope VARCHAR(2))
AS
BEGIN
IF(@Scope='A')
SELECT 1 AS ID,2 AS NAME
IF(@Scope='B')
SELECT 1 AS CustomerID,'Sample@sample.com' AS Email,'121314' AS ContactNumber
END
答案 0 :(得分:0)
我相信您要求使用FOR XML或FOR XML AUTO:
create table mytable(col1 int, col2 nvarchar(20), col3 money)
insert into mytable(col1, col2, col3) values (1, 'string', 123.45)
select * from mytable
for xml auto
发射:
您可以在任何查询结果集上执行此操作:
select * from sys.objects
for xml auto
这将类似地发出该结构。
答案 1 :(得分:0)
我需要一种方法,将存储过程的结果集直接转换为XML对象而不创建表结构,因为过程的结果集可能会有所不同
TSQL无法做到这一点。 TSQL只能使用SELECT而不是EXECUTE转换为XML。您可以使用回送链接服务器或CLR来做到这一点,但这是黑客,在Azure SQL DB中不可用。您将不得不寻找另一种方式。 EG
CREATE PROCEDURE SPSample(@Scope VARCHAR(2), @ResultsAsXml bit = 0)
. . .