- - PR -
本当に初歩的な質問で申し訳ありません。ストアドでの文字列連結
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-09-29 16:00
いつもお世話になります。本当に初歩的な質問で申し訳ありません。最近、仕事でSQLServerのストアドを作らないといけなくなり、次の様なストアドを作成しました。
テストテーブルからテスト列を取得し、取得したテスト列を文字列連結して@STRINGにセットするといういたって簡単なストアドになります。 しかし、なぜか@stringに@TestColの値が入ってくれないのです。 SQLServerの文字列連結は'+'であり、CASTして変換かけたりしてみたのですが、うまくいきません。また@testcolには正しい値が入っています。 本当に初歩的な質問で申し訳ないのですが、よろしくお願いいたします。 ----------------------------------------------- ALTER PROCEDURE GetTest AS BEGIN DECLARE @string VARCHAR(8000) --SQL文 DECLARE @testcol VARCHAR(100) --SQL文 DECLARE cursor_test CURSOR FOR SELECT テスト列 FROM テストテーブル WHERE テストCD IN(1,2,3,4) OPEN cursor_test WHILE(1=1) --無限ループ BEGIN FETCH cursor_test INTO @testcol if (@@fetch_status <> 0) BEGIN CLOSE cursor_test DEALLOCATE cursor_test BREAK END SET @string=@string+CAST(@testcol AS VARCHAR(100)) END END | ||||
|
投稿日時: 2006-09-29 16:18
@stringの初期値は設定されていますか?
以下ヘルプからコピペ
_________________ 音速の定時退社! | ||||
|
投稿日時: 2006-09-29 16:18
最近触って無いので、うろ覚えですが、
@stringに初期値が入っていないのでNULLになっていて、 SET @string=@string+CAST(@testcol AS VARCHAR(100)) が、 @string = NULL + '<ANY>' で NULLってことになっていませんか? | ||||
|
投稿日時: 2006-09-29 16:26
Yamさん、かつのりさん早速のレスありがとうございます。
最初の方に SET @string='' を入れることで解決しました。 お二人の説明を聞いていてなるほどと思いました。 文字列NULLに連結してもNULLなんですね・・・。 初歩的な質問に分かりやすく説明して頂きありがとうございました。 |
1