SQL Server:获取"无效的列名"

cih*_*a87 1 t-sql sql-server

我正在写一个查询,但有一些我找不到的问题.这是我的代码

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 
Run Code Online (Sandbox Code Playgroud)

粗糙区域存在问题:

消息207,级别16,状态1,行18
无效的列名称"SessionStartTime".
消息207,级别16,状态1,行19
无效的列名称"SessionCloseTime".
消息102,级别15,状态1,行16
'@v_count'附近的语法不正确.

这是我的表

CREATE TABLE [dbo].[Test]( 
    [ScenarioID] [bigint] NULL, 
    [SessionStartTime] [datetime] NOT NULL, 
    [SessionCloseTime] [datetime] NULL 
) ON [PRIMARY] 
Run Code Online (Sandbox Code Playgroud)

这是我的表

CREATE TABLE [dbo].[Test](
    [ScenarioID] [bigint] NULL,
    [SessionStartTime] [datetime] NOT NULL,
    [SessionCloseTime] [datetime] NULL
) ON [PRIMARY]

GO
Run Code Online (Sandbox Code Playgroud)

小智 5

@v_countint在查询的开头声明为an 而不是表.你不能SELECT * INTO @v_count在那里使用.