Результат Набор процедур в XML - PullRequest
0 голосов
/ 25 сентября 2018

как мы можем преобразовать набор результатов процедуры в XML без создания временной таблицы, так как набор результатов может различаться по своей структуре в зависимости от входных данных?сценарий должен работать как с базой данных SQL-сервера, так и с базой Azure.

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

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

мне нужен способ, чтобы результирующий набор из хранимой процедуры напрямую преобразовывался в объект XML без создания структуры таблицы, поскольку результирующий набор из процедуры может варьироваться

В TSQL нет способасделать это.TSQL может конвертировать в XML только с помощью SELECT, но не EXECUTE.Вы могли бы сделать это с помощью сервера, связанного с обратной связью, или CLR, но это хаки, которых нет в SQL Azure DB.Тебе придется найти другой путь.EG

CREATE PROCEDURE SPSample(@Scope VARCHAR(2), @ResultsAsXml bit = 0) 
. . .
0 голосов
/ 25 сентября 2018

Я полагаю, что вы просите использовать FOR XML или FOR XML AUTO:

https://docs.microsoft.com/en-us/sql/relational-databases/xml/for-xml-sql-server?view=sql-server-2017

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

Это излучит эту структуру аналогично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...