2016-09-15 36 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它如何產生差異ithink quetion不清楚 –

回答

1

不確定爲什麼你有這樣的要求..你可以很好地使用@tempCustomer中的select *如上面所述在評論中..但是如果你仍然想循環打印並打印單個日期,你可以做一些解決方法

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 
0

在第一變化表變量聲明:

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

後INSERT使用@@ROWCOUNT以獲得插入的行數:

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

SELECT @intFlag = @@ROWCOUNT 

然後在循環:

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

    SET @intFlag = @intFlag - 1 
END 

該解決方案是有點模糊,但應該工作,雖然。