【问题标题】:Why is my alter table statement not properly adding a column to my temporary table?为什么我的 alter table 语句没有正确地将列添加到我的临时表中?
【发布时间】:2015-02-05 01:06:22
【问题描述】:

我在这个存储过程的开头创建了一个临时表。创建成功,可以选择插入。

这里是创建语句

CREATE TABLE #tmpImportData (GuideFirstName VARCHAR(MAX), GuideLastName VARCHAR(MAX), 
                             email VARCHAR(MAX), group_id_text VARCHAR(MAX), CandidateName VARCHAR(MAX), 
                             grade_text VARCHAR(5), dateofbirth DATE

                             )

我的问题是在更改临时表后尝试更新列。我收到错误

消息 207,级别 16,状态 1
无效的列名

代码:

declare @SQl1 nvarchar(max)
set @SQL1 ='
ALTER TABLE #tmpImportData 
ADD group_id INT
ALTER TABLE #tmpImportData 
ADD guide_id INT
ALTER TABLE #tmpImportData 
ADD password_plain_text VARCHAR(500)
ALTER TABLE #tmpImportData 
ADD guide_email VARCHAR(500)
ALTER TABLE #tmpImportData 
ADD class_id INT'

exec sp_executesql @Sql1

UPDATE #tmpImportData 
SET group_id = CAST(group_id_text AS INT)

UPDATE #tmpImportData 
SET group_id = 0 WHERE group_id IS NULL

【问题讨论】:

  • 这个“group_id_text”是从哪里来的??
  • 向我们展示#tmpImportData 表定义(创建语句)。我猜你还没有定义这样的列 -.group_id_text
  • @PareshJv 我已经添加了 create 语句
  • @gotqn 我已经添加了create语句
  • @CodeFlava 我正在执行您的代码,SQL Server Management Studio 2012 中没有错误。你的SQL 是什么版本?

标签: sql-server tsql sql-update ddl alter-table


【解决方案1】:

试着这样做

declare @SQl1 nvarchar(max)
set @SQL1 ='
ALTER TABLE #tmpImportData 
ADD ['+@group_id+'] INT
ALTER TABLE #tmpImportData 
ADD ['+@guide_id+'] INT
ALTER TABLE #tmpImportData 
ADD ['+@password_plain_text+'] VARCHAR(500)
ALTER TABLE #tmpImportData 
ADD ['+@guide_email+'] VARCHAR(500)
ALTER TABLE #tmpImportData 
ADD ['+@class_id+]' INT'

exec  @Sql1

UPDATE #tmpImportData 
SET group_id = CAST(group_id_text AS INT)

UPDATE #tmpImportData 
SET group_id = 0 WHERE group_id IS NULL

【讨论】:

  • 因为从未声明过变量
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-13
  • 2012-07-16
  • 2021-08-03
相关资源
最近更新 更多