Или я чего-то не понимаю или лыжи совсем не катят.
На форме лежит TMSSQLConnection, установлено соединение с сервером.
Параметры соединения и клиента:
Microsoft SQL Server 12.00.5000
Microsoft SQL Server Native Client 11.0: 11.0.2100.60
В TMSQuery делаю запрос вида SELECT * FROM xxx FOR XML PATH, в SSMS результат отлично виден в виде XML.
В дизайне смотрю поле получилось типа TBlobField. Пытаюсь считать значение следующим образом
s:= TMSXMLField(qXML.Fields[0]).XML и в итоге в переменной s я не вижу нормального xml значения.
Что я делаю не так? Delphi XE7 и SDAC 7.3.13
xml поле
Re: xml поле
Чтобы SQL Server возвращал результат SQL запроса не как BLOB, а как XML, добавьте ключевое слово TYPE в выражение FOR XML. Например:
Код: Выделить всё
SELECT * FROM xxx FOR XML PATH, TYPE
Re: xml поле
Добрый день, спасибо за оперативный ответ. Думаю это стоит добавить куда-то в документацию или FAQ, так как в том же SSMS результат без TYPE точно также просматривается как xml. SDAC же требует четкого возврата типа xml для того чтобы поле датасета создалось TMSXMLField, а не TBlobField.
PS: кстати я решил данную проблему через присвоение результата генерации xml типу varchar(MAX) и возврату уже этого типа. Может кому пригодится. Ну и для общего развития, если TYPE не указан, то результат возвращается в виде nvarchar(MAХ).
PS: кстати я решил данную проблему через присвоение результата генерации xml типу varchar(MAX) и возврату уже этого типа. Может кому пригодится. Ну и для общего развития, если TYPE не указан, то результат возвращается в виде nvarchar(MAХ).