Tsql 存储过程中的Alter表

Tsql 存储过程中的Alter表,tsql,stored-procedures,sql-server-2000,alter-table,Tsql,Stored Procedures,Sql Server 2000,Alter Table,第一次发帖,请让我知道这个问题是否已经得到回答!我试着四处寻找,但什么也找不到 在我的存储过程中,我在进行一些修改时选择了一个临时表(我把它简化为基本问题) 在查询分析器中,如果分别突出显示并运行它们,我将获得所需的输出 ColA ColB ColC ColD ColE ---- ---- ----- ----- ----- a b c d e 但是,当我一起运行它们时,会出现以下错误: (1 row(s) affected) Msg 207, Leve

第一次发帖,请让我知道这个问题是否已经得到回答!我试着四处寻找,但什么也找不到

在我的存储过程中,我在进行一些修改时选择了一个临时表(我把它简化为基本问题)

在查询分析器中,如果分别突出显示并运行它们,我将获得所需的输出

ColA ColB ColC  ColD  ColE
---- ---- ----- ----- -----
a    b    c     d     e    
但是,当我一起运行它们时,会出现以下错误:

(1 row(s) affected)
Msg 207, Level 16, State 1, Line 10
Invalid column name 'colC'.
似乎正在跳过ALTER TABLE语句?我在每个命令后插入GO语句,代码在查询分析器中工作。但是,我不知道如何在存储过程中复制它。(s-procs是否有“GO”等效物?)


非常感谢您的帮助

GO不是T-SQL的一部分,它是一个批处理分隔符,受许多SQL Server工具支持

通常,您可以使用EXEC执行ALTER TABLE,但是如果在创建后立即需要ALTER的问题是如何获取伪列,那么您的具体示例可以简单地完成:

SELECT 'a' AS ColA
    ,'b' AS ColB
    ,CAST(NULL AS char(5)) AS ColC
    ,CAST(NULL AS char(5)) AS ColD
    ,CAST(NULL AS char(5)) AS ColE
INTO #tmp

UPDATE #tmp
SET ColC = 'c',
    ColD = 'd',
    ColE = 'e'
FROM #tmp

SELECT * FROM #tmp

我在SQl 2005上运行了它,并获得了所需的输出,没有任何错误。忘了注意,我坚持使用SQl 2000是为了:(
SELECT 'a' AS ColA
    ,'b' AS ColB
    ,CAST(NULL AS char(5)) AS ColC
    ,CAST(NULL AS char(5)) AS ColD
    ,CAST(NULL AS char(5)) AS ColE
INTO #tmp

UPDATE #tmp
SET ColC = 'c',
    ColD = 'd',
    ColE = 'e'
FROM #tmp

SELECT * FROM #tmp