Я работаю над хранимой процедурой для приложения календаря. Каждое событие в календаре может иметь несколько дат. Эта информация хранится в двух разных таблицах. Вместо того, чтобы писать две хранимые процедуры и вызывать вторую несколько раз, чтобы сохранить даты, я бы просто передал их с использованием XML. Проблема в том, что я хочу преобразовать некоторые значения в типы даты, а одно из них - в тип ntext.
Вот простой пример того, что у меня есть:
declare @samplexml as xml
set @samplexml = '<root><scheduleRow><dateBegin>4/5/2009</dateBegin><dateEnd>4/6/2009</dateEnd><timeBegin>1:00 pm</timeBegin><timeEnd>2:00 pm</timeEnd><location>Sheas House</location></scheduleRow><scheduleRow><dateBegin>5/5/2009</dateBegin><dateEnd>5/6/2009</dateEnd><timeBegin>2:00 pm</timeBegin><timeEnd>3:00 pm</timeEnd><location>Metro Buffet</location></scheduleRow></root>'
select x.scheduleRow.value('./dateBegin[1]','varchar(20)') as date_begin,
x.scheduleRow.value('./dateEnd[1]','varchar(20)') as date_end,
x.scheduleRow.value('./timeBegin[1]','varchar(20)') as time_begin,
x.scheduleRow.value('./timeEnd[1]','varchar(20)') as time_end,
x.scheduleRow.value('./location[1]','ntext') as location
from @samplexml.nodes('/root/scheduleRow') as x(scheduleRow)
Если вы попытаетесь запустить это, вы получите эту ошибку:
Сообщение 9500, Уровень 16, Состояние 1, Строка 4
Недопустимый тип данных 'ntext', используемый в методе VALUE.
Что я здесь не так делаю? Есть ли способ сделать то, что я хочу?