Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 select ... for xml  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
как можно сделать так, чтобы
select col from table for xml auto
выводил каждый элемент в отдельную строку???


для спящего время бодрствования равносильно сну
14 фев 04, 01:01    [536053]     Ответить | Цитировать Сообщить модератору
 Re: select ... for xml  [new]
Glory
Member

Откуда:
Сообщений: 104760
Непонятен вопрос.
Результат for xml auto уже есть одно очень длинная строка.
Отображением этой строки должен заниматься клиент.
14 фев 04, 15:35    [536275]     Ответить | Цитировать Сообщить модератору
 Re: select ... for xml  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
если строка длиннее 2048 символов, то она нещадно обрезается, хоть на чем...
т.е. если она обрезается на значении атрибута, ничего страшного
но если она обрезается на имени атрибута, то все, строку уже использовать нельзя...
т.е. если формировать xml Документ из 100 строк (по 2048 символов), вручную редактировать его... не с руки...


для спящего время бодрствования равносильно сну
14 фев 04, 22:08    [536414]     Ответить | Цитировать Сообщить модератору
 Re: select ... for xml  [new]
Glory
Member

Откуда:
Сообщений: 104760
то она нещадно обрезается, хоть на чем...

Например ? Привидите код с помощью которого вы получаете результат на клиенте.
15 фев 04, 18:53    [536590]     Ответить | Цитировать Сообщить модератору
 Re: select ... for xml  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
я получаю код через QA... на клиенте не получаю...


для спящего время бодрствования равносильно сну
15 фев 04, 19:44    [536611]     Ответить | Цитировать Сообщить модератору
 Re: select ... for xml  [new]
Glory
Member

Откуда:
Сообщений: 104760
Надеюсь что тогда вы выбираете Result in Text. Ибо если выбрано Result in Grid то вы сможете получить максимум 8192 байта результата. Да и то, если задатите такое значение в Tools-Options-Results-Maximum characters per column
15 фев 04, 20:03    [536616]     Ответить | Цитировать Сообщить модератору
 Re: select ... for xml  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
в том то и дело... что ин текст... отображает независимо от настройки
"Tools-Options-Results-Maximum characters per column"
отображает 2048 символов...
если указать 2000 символов... то будет в первой строке выводиться 2000 символов, 48 следующих символов обрезается и дальше выводится следующие 2000 символов... и сиквелу совершенно пофику на чем строка обрезается...
=\

для спящего время бодрствования равносильно сну
16 фев 04, 06:21    [536710]     Ответить | Цитировать Сообщить модератору
 Re: select ... for xml  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1873
на клиенте нужно получать XML в поток
вот пример на Delphi

function TdmTransfer.CreateOutMessage : string;
var
OutStream : TStringStream;
MyIStream : IStream;
adcGetOutMessages : TADOCommand;
Parameter : _Parameter;
RecordsAffected,Parameters : OleVariant;
Buffer : Utf8String;
begin
Result := '';
OutStream := TStringStream.Create('');
if Assigned(OutStream) then
MyIStream := TStreamAdapter.Create(OutStream,soReference);
try
adcGetOutMessages := TADOCommand.Create(nil);
adcGetOutMessages.Connection := DistributionConnection;
adcGetOutMessages.CommandTimeout := 3000;
adcGetOutMessages.CommandText := 'exec upGetXML';
adcGetOutMessages.Properties.Item['Output Stream'].Value := MyIStream;
RecordsAffected := unassigned;
Parameters := EmptyParam;
adcGetOutMessages.CommandObject.Execute(RecordsAffected,Parameters,adExecuteStream);
if OutStream.Size > 0 then
begin
Buffer := OutStream.ReadString(OutStream.Size);
Result := Utf8ToAnsi(Buffer);
end;
finally
OutStream.Free;
MyIStream := nil;
adcGetOutMessages.Free;
end
end;

16 фев 04, 06:26    [536711]     Ответить | Цитировать Сообщить модератору
 Re: select ... for xml  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
спасибо за пример :) теперь не придется разбираться самому... но вопрос был немножко в другом, но я так понимаю, что настроить QA для этих целей никак нельзя...)))


для спящего время бодрствования равносильно сну
16 фев 04, 06:39    [536717]     Ответить | Цитировать Сообщить модератору
 Re: select ... for xml  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Сервиспака 3 конечно не стоит...
16 фев 04, 06:45    [536720]     Ответить | Цитировать Сообщить модератору
 Re: select ... for xml  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
гм... а как догадалси?)
да не могу я ставить... хехе... не я ето решаю... а кто решает грит, что не хоЦЦа... вдруг что-нить вылезет... :)


для спящего время бодрствования равносильно сну
16 фев 04, 07:48    [536738]     Ответить | Цитировать Сообщить модератору
 Re: select ... for xml  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Search the Knowledge Base
16 фев 04, 07:58    [536742]     Ответить | Цитировать Сообщить модератору
 Re: select ... for xml  [new]
Glory
Member

Откуда:
Сообщений: 104760
в том то и дело... что ин текст... отображает независимо от настройки
"Tools-Options-Results-Maximum characters per column"


А при выгрузке во внешиний файл результат тоже обрезается ?
16 фев 04, 10:28    [536891]     Ответить | Цитировать Сообщить модератору
 Re: select ... for xml  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
да... к сожалению теже самые 2033 (как оказалось) символов... =\


для спящего время бодрствования равносильно сну
16 фев 04, 11:48    [537064]     Ответить | Цитировать Сообщить модератору
 Re: select ... for xml  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31622
Вообще select ... for xml выводит массив строк, а не одну строку. "разрезание" делается, естественно, без учёта тегов. Кстати, строки эти не постоянного размера - полагаться на это нельзя.
Так-что единственный выход - на клиенте читать и собирать в строку (ну или писать в файл).
16 фев 04, 13:52    [537333]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить