メッセージ16927、レベル16、状態1、プロシージャGetWfGenProcessParameters、行21 text、ntext、およびimage変数にフェッチできません。"テキスト、ntext、およびイメージ変数にフェッチできません。 SQL Serverで?
本当にこのカーソルをテキストデータで操作する必要があります。 このエラーを乗り越える方法はありますか?
メッセージ16927、レベル16、状態1、プロシージャGetWfGenProcessParameters、行21 text、ntext、およびimage変数にフェッチできません。"テキスト、ntext、およびイメージ変数にフェッチできません。 SQL Serverで?
本当にこのカーソルをテキストデータで操作する必要があります。 このエラーを乗り越える方法はありますか?
あなたがSQL Server 2005
を使用している場合は、NVARCHAR(MAX)
を使用することができます。
CREATE TABLE text_test (test NTEXT NOT NULL)
INSERT
INTO text_test
VALUES ('test')
DECLARE @t NVARCHAR(MAX);
DECLARE txt_cur CURSOR FOR
SELECT test
FROM text_test
OPEN txt_cur
FETCH NEXT
FROM txt_cur
INTO @t
CLOSE txt_cur
DEALLOCATE txt_cur
GO
DROP TABLE text_test
GO
なぜ、カーソルを使用しているのですか?カーソルは、すべての費用をかけて回避する必要があります。おそらくあなたの問題はなくなるでしょう。しかし、あなたがカーソル内で何をしようとしているかについてのアイデアがなければ、アドバイスを提供することは難しいです。確かに、SQL Serverはテキストデータを変数に入れることができないという事実を変えることはできません。システムの制限を満たしているときは、自分が行っていることとそのやり方を再考する必要があります。
私はいくつかのXMLフィールドで作業しており、NTEXTとして保存されています。そして、私はxmlをchunckingせずに* sp_xml_preparedocument *で動作するためにNTEXT変数が必要です。 –
「すべてのコストをかけて」カーソルを避けるべきではありません。便利なときにカーソルを使用する必要があり、開発時間やデータの移行時間が大幅に短縮されることがあります。時には、ストアドプロシージャを一度実行して、カーソルを実行する最速の方法を何か実行する必要があります。すべてのコストを避けるべきだと言っているのは、コストが問題ではない場合にのみ当てはまりますが、私と私のために、時間が大幅に節約され、より効率的になります。それで、カーソルは避けようとするべきだと私は同意するだろうが... – bunggo
@bunggo、開発時間を節約するカーソルは非常に貧しい習慣です。データベース時間は、dev時間よりもずっと貴重です。はい、カーソルを使用する時間がありますが、経験のあるdba以外ではほとんど使用しないでください。アプリケーション開発者はまったく怠け者であるか愚かであり、正しく動作する方法を学ぶことができません。ちなみに、セットベースのソリューションは一般に短く、開発に要する時間が短くて済みます。 – HLGEM
あなたはvarchar型にキャストする必要があり、それは本当に長いです場合は、おそらくテキストを失うことになります。 – dotjoe