如何在tsql中打印表变量值?

时间:2016-09-15 08:51:01

标签: sql-server

我是sql server中的新用户并写下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".


我怎么能解决这个问题?谢谢大家。

2 个答案:

答案 0 :(得分:2)

不确定为什么你有这样的要求..你可以很好地使用select * from @tempCustomer,如上所述在评论中..但如果你仍想循环并打印个别日期,你可以做一些解决方法

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

答案 1 :(得分: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循环:

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

    SET @intFlag = @intFlag - 1
END

这个解决方案有点模糊,但应该可以使用。