【问题标题】:SQL Server : getting "invalid column name"SQL Server:获取“无效的列名”
【发布时间】:2012-10-23 12:19:02
【问题描述】:

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

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 

粗体部分有问题:

消息 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] 

这是我的桌子

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

GO

【问题讨论】:

    标签: sql-server tsql


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      Select into 创建一个表。

      你可能想要

      select @v_count = count(*)
      from [dbo].[Test] 
      ...
      

      您还需要在例程开始时初始化 @v_max。

      set @v_max = 0
      

      至于您的其他问题,您的测试表中是否有名为 SessionStartTime 和 SessionCloseTime 的列?

      【讨论】:

      • 正如我之前评论的:SQL 解析器有时会给出接近真实错误的错误错误。尝试注释掉 SELECT * INTO @v_count 行并检查它是否仍然给你那些无效的列名错误。
      猜你喜欢
      • 2013-09-27
      • 1970-01-01
      • 2013-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-12
      相关资源
      最近更新 更多