我正在编写查询,但有一些我找不到的问题。这是我的代码
begin
declare @v_max int
declare @v_count int
declare @sessionID int
declare @sessionStart datetime
declare @sessionEnd datetime
declare my_cursor cursor local for
select * from Test;
open my_cursor
fetch next from my_cursor INTO @sessionID, @sessionStart, @sessionEnd
while @@FETCH_STATUS = 0
begin
select * into **@v_count**
from [dbo].[Test]
WHERE **[dbo].[Test].[SessionStartTime]** > @sessionStart
OR **[dbo].[Test].[SessionCloseTime]** < @sessionEnd
if @v_count > @v_max
set @v_max = @v_count
fetch next from my_cursor INTO @sessionID, @sessionStart, @sessionEnd
end
print @v_max;
close my_cursor
deallocate my_cursor
end
粗体区域存在问题:
Msg 207,Level 16,State 1,Line 18
列名称“SessionStartTime”无效。
Msg 207,Level 16,State 1,Line 19
列名称“SessionCloseTime”无效。
Msg 102,Level 15,State 1,Line 16
'@v_count'附近的语法不正确。
这是我的表
CREATE TABLE [dbo].[Test](
[ScenarioID] [bigint] NULL,
[SessionStartTime] [datetime] NOT NULL,
[SessionCloseTime] [datetime] NULL
) ON [PRIMARY]
这是我的表
CREATE TABLE [dbo].[Test](
[ScenarioID] [bigint] NULL,
[SessionStartTime] [datetime] NOT NULL,
[SessionCloseTime] [datetime] NULL
) ON [PRIMARY]
GO
答案 0 :(得分:5)
@v_count
在查询开头声明为int
,而不是表格。你不能在那里使用SELECT * INTO @v_count
。
答案 1 :(得分:3)
Select into
创建一个表格。
你可能想要
select @v_count = count(*)
from [dbo].[Test]
...
您还需要在日常工作开始时将@v_max初始化。
set @v_max = 0
至于你的其他问题,你的Test表中是否有名为SessionStartTime和SessionCloseTime的列?