Я пытаюсь создать хранимую процедуру, которая использует переменную BIT для вывода одного из двух возможных результатов FOR XML оператора Select с внутренним соединением. Вот текущая форма процедуры:
CREATE PROCEDURE dbo.CustomerAddress_Get
@IsAuto BIT = 0
AS
BEGIN
--@IsAuto If's
IF (@IsAuto == 0)
BEGIN
SELECT LEFT(GivenName,1), Surname, DOB, AccountId, Type, Balance FROM Custs
INNER JOIN dbo.Accounts
ON Accounts.CustNo = Custs.CustNo
FOR XML RAW ('CustomerAccount'), ELEMENTS, ROOT('CustomerAccountDetails')
END
ELSE
BEGIN
SELECT LEFT(GivenName,1), Surname, DOB, AccountId, Type, Balance FROM Custs Customer
INNER JOIN dbo.Accounts Account
ON Account.CustNo = Customer.CustNo
FOR XML AUTO, ELEMENTS, ROOT
END
END;
И код, который я специально пытаюсь изменить для вывода учетных записей и клиентов в их собственные элементы в выводе XML AUTO, таков:
SELECT LEFT(GivenName,1), Surname, DOB, AccountId, Type, Balance FROM Custs
INNER JOIN dbo.Accounts
ON Accounts.CustNo = Custs.CustNo
FOR XML AUTO, ELEMENTS, ROOT
Пример моего текущего вывода XML из моего Else SELECT...FOR AUTO; утверждение таким образом:
<Customer>D<Surname>Grayson</Surname><DOB>1940-04-01T00:00:00</DOB><Account><AccountId>159</AccountId><Type>Chequing</Type><Balance>0.0000</Balance></Account><Account><AccountId>160</AccountId><Type>Savings </Type><Balance>500.0000</Balance></Account></Customer>
Тем не менее, я требую, чтобы это было больше похоже на это:
<cu>
<FirstName>Catherine</FirstName>
<LastName>Abel</LastName>
<EmailAddress>[email protected]</EmailAddress>
<ca>
<AddressType>Main Office</AddressType>
<ad>
<City>Van Nuys</City>
<StateProvince>California</StateProvince>
</ad>
Я полагал, что именно для этого предназначен FOR XML AUTO, однако, похоже, он фактически не форматирует результирующий XML.
Теперь мой вопрос относительно этого заключается в том, как именно я могу сделать этот SELECT поместить клиента (имя, фамилия и DOB/DateOfBirth) и учетные записи (AccountId, тип и баланс) их собственные соответствующие данные в свои собственные элементы в XML АВТО выход?
BIT
. Как мне этого добиться? Но вопрос в конце звучит так: Вывод моегоFOR XML AUTO
должен заключать два источника в родительские элементы. Как я могу этого добиться? На самом деле это два вопроса. Пожалуйста, уточните... - person Shnugo   schedule 16.11.2016AUTO
означает, что SQL-Server выбирает формат за вас. Если вы хотите контролировать это, вы должны использоватьFOR XML PATH
и указать вывод самостоятельно. Это вариант? - person Shnugo   schedule 16.11.2016