2009-08-10 8 views
1

私はカレンダーアプリケーションのストアドプロシージャを使用しています。カレンダーの各イベントは、複数の日付を持つことができます。この情報は、2つの異なるテーブルに格納されます。 2つのストアドプロシージャを記述し、日付を保存するために複数のストアドプロシージャを複数回呼び出すのではなく、XMLを使用して渡すだけです。問題は、いくつかの値を日付型に変換し、そのうちの1つをntext型に変換することです。あなたはこれを実行しようとXMLに格納された値をSQL Server 2005の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を VALUEメソッドで使用されているデータ型 'ntext'が無効です。

私はここで間違っていますか?私がしたいことをする方法はありますか?

答えて

3

新しい開発には、TEXT、NTEXT、およびIMAGEタイプを使用しないでください。それらはdeprecatedであり、将来のリリースのSQLでは削除されます。 SQL 2k5以来、彼らはもはや新しいフィーチャー、ポイントインXMLメソッドではサポートされなくなりました。

VARCHAR(MAX)、NVARCHAR(MAX)およびVARBINARY(MAX)を代わりに使用してください。

関連する問題