2016-09-15 11 views
2

私はsql serverで新たなんだと、このtsql書き込み:
テーブル変数の値をtsqlでどのように表示できますか?

DECLARE @TempCustomer TABLE 
(
    DATE_ nchar(20) 
); 

INSERT INTO 
    @TempCustomer 
SELECT distinct [ExecuteDate] 
FROM 
    [ClubEatc].[dbo].[GetOnlineBills] 

DECLARE @intFlag int 
set @intFlag=0; 
WHILE (@intFlag <=2) 
BEGIN 
    PRINT @TempCustomer.DATE_ 
    SET @intFlag = @intFlag + 1 
END 
GO 


をしかし、私は、そのクエリを実行すると、私はこのエラーを取得:
私は解決することができますどのように

Msg 137, Level 16, State 1, Line 30 
Must declare the scalar variable "@TempCustomer". 


問題?すべてありがとう。

+0

'select * from @ TempCustomer'? –

+0

すべてのデータを表示する@a_horse_with_no_name!私はレコードでショーレコードを欲しい –

+0

ループであなたの設定@intFlagそれはどのように違いを生むのですか? –

答えて

1

なぜこのような要件があるのか​​分かりません。上記のように@tempCustomerからselect *をよく使うことができます。しかし、まだループして個々の日付を印刷したい場合は、回避策をとることができます

挿入された行の数を得るためにINSERT使用 @@ROWCOUNT

DECLARE @TempCustomer TABLE (
    RN int IDENTITY(1,1) NOT NULL, 
    DATE_ nchar(20) 
); 
DECLARE @intFlag int 

:第1変化テーブル変数宣言で

0
DECLARE @TempCustomer TABLE 
(
    id int identity(1,1) 
    DATE_ nchar(20) 
); 

INSERT INTO 
    @TempCustomer 
SELECT distinct [ExecuteDate] 
FROM 
    [ClubEatc].[dbo].[GetOnlineBills] 

DECLARE @intFlag int 
set @intFlag=0; 
WHILE (@intFlag <=2) 
BEGIN 
    select * from @TempCustomer where id = @intFlag 
    SET @intFlag = @intFlag + 1 
END 
GO 

INSERT INTO @TempCustomer 
SELECT distinct [ExecuteDate] 
FROM [GetOnlineBills] 

SELECT @intFlag = @@ROWCOUNT 

その後WHILEループ:

WHILE (@intFlag > 0) 
BEGIN 
    select DATE_ 
    from @TempCustomer 
    WHERE RN = @intFlag 

    SET @intFlag = @intFlag - 1 
END 

このソリューションは、少し曖昧ですが、しかし動作するはずです。

関連する問題