こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

TranzactSQL文 文字列変数同士の連結

文字列変数の連結について質問いたします。
通常以下の場合、結果は望んだとおりになります。
-----------------------------------------------
SET @会社=N'A社'
SET @別会社=N'B社'
SET @結果=@会社+'、"+@別会社
SELECT @結果
’A社、B社'
----------------------------------------------
以下のように記述にして,複数会社名を連結させる目的で
FETCHを使用して変数に値を格納しようとしていますが
結果NULLが返されるのはなぜでしょうか。
----------------------------------------------
DECLARE myCursor CURSOR FOR
SELECT 会社名 FROM 会社マスター

OPEN myCursor

FETCH NEXT FROM myCursor
INTO @会社名
WHILE @@FETCH_STATUS=0

BEGIN
    @結果=@結果+@会社名

   FETCH NEXT FROM myCursor
   INTO @会社名
END

CLOSE myCursor
DEALLOCATE myCursor

SELECT @結果

投稿日時 - 2014-01-19 11:09:09

QNo.8436550

暇なときに回答ください

このQ&Aは役に立ちましたか?

9人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.2

>結果NULLが返されるのはなぜでしょうか

@結果=@結果+@会社名
最初の@結果か、いずれかのレコードの@会社名に
Nullが1つでもあれば、Nullになりますが。

@結果= 'ABC' + null
は、
@結果がnullになります。

投稿日時 - 2014-01-19 22:01:51

お礼

回答ありがとうございます。
解決しました。

投稿日時 - 2014-02-17 20:51:17

ANo.1

BEGINの前で、@結果を初期化しなくて良いのかな?

投稿日時 - 2014-01-19 13:51:13

お礼

回答ありがとうございます。

以下のステップを踏むと変数は初期化されるようです。

FETCH NEXT FROM myCursor
INTO @会社名

妥協策として、プロシージャに
テーブル変数にフィールドを1個作り、それを
格納場所として値を出し入れしております。

投稿日時 - 2014-02-17 20:57:16

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-