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

Откуда: Київ
Сообщений: 10428
Есть xml типа

declare @parameters nvarchar(MAX)
set @parameters = 
N'<nodes>
  <pageSize>10</pageSize>
  <startRecordIndex>0</startRecordIndex>
  <Id>84DC1137-883A-E411-942F-00259078DB31</Id>
  <fromDate>2014-09-15 10:46:40.773Z</fromDate>
  <toDate />
</nodes>'


Такой запрос отрабатывает если гуид указан

	SELECT
	 @pageSize = doc.col.value('pageSize[1]', 'int')
	,@startRecordIndex = doc.col.value('startRecordIndex[1]', 'int')
	,@Id = doc.col.value('Id[1]', 'uniqueidentifier')
	,@fromDate = doc.col.value('fromDate[1]', 'datetime')
	,@toDate = doc.col.value('toDate[1]', 'datetime') 
	FROM @xml.nodes('/nodes') doc(col)


Если же такой хмл (поле Ид пустое) дает ошибку преобразования

declare @parameters nvarchar(MAX)
set @parameters = 
N'<nodes>
  <pageSize>10</pageSize>
  <startRecordIndex>0</startRecordIndex>
  <Id></Id>
  <fromDate>2014-09-15 10:46:40.773Z</fromDate>
  <toDate />
</nodes>'



Как правильно обработать?
Ну, можно читать в nvarchar и потом после чтения преобразовывать, а еще?
27 авг 15, 16:56    [18077523]     Ответить | Цитировать Сообщить модератору
 Re: xml: как обработать ошибку?  [new]
_human
Member

Откуда:
Сообщений: 569
Winnipuh,

https://msdn.microsoft.com/en-us/library/hh230993.aspx

SELECT 
    CASE WHEN TRY_CONVERT(float, 'test') IS NULL 
    THEN 'Cast failed'
    ELSE 'Cast succeeded'
END AS Result;
GO
27 авг 15, 17:23    [18077620]     Ответить | Цитировать Сообщить модератору
 Re: xml: как обработать ошибку?  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
Winnipuh
Ну, можно читать в nvarchar и потом после чтения преобразовывать, а еще?
doc.col.value('(Id[not(empty(text()))])[1]', 'uniqueidentifier')
27 авг 15, 17:27    [18077643]     Ответить | Цитировать Сообщить модератору
 Re: xml: как обработать ошибку?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
спасибо!
27 авг 15, 17:53    [18077781]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить