我是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".
我怎么能解决这个问题?谢谢大家。
答案 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
这个解决方案有点模糊,但应该可以使用。