2014-12-07 54 views
0

我有一个在此存储过程开始时创建的临时表。它已成功创建,可以从中选择并插入。为什么我的alter table语句不正确地向临时表中添加一列?

这里是create语句

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 
+1

在哪里这个'group_id_text'来自? – 2014-12-07 05:50:53

+0

向我们展示'#tmpImportData'表定义(创建语句)。我想你还没有定义这样的列-.'group_id_text' – gotqn 2014-12-07 09:30:40

+0

@PareshJv我已经添加了创建语句 – JohnOsborne 2014-12-07 15:34:37

回答

0

尝试做这样的

declare @SQl1 nvarchar(max) 
set @SQL1 =' 
ALTER TABLE #tmpImportData 
ADD ['[email protected]_id+'] INT 
ALTER TABLE #tmpImportData 
ADD ['[email protected]_id+'] INT 
ALTER TABLE #tmpImportData 
ADD ['[email protected]_plain_text+'] VARCHAR(500) 
ALTER TABLE #tmpImportData 
ADD ['[email protected]_email+'] VARCHAR(500) 
ALTER TABLE #tmpImportData 
ADD ['[email protected]_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 
+0

这没有奏效 – JohnOsborne 2014-12-09 02:11:33

+0

因为变量从未被声明过 – JohnOsborne 2014-12-09 02:24:26

+0

当然你需要先声明 – 2014-12-09 05:37:56

相关问题