我想像这样将table1的列值复制到table2并将其从table1中删除
IF COL_LENGTH('table1', 'coltocopy') IS NOT NULL
BEGIN
INSERT INTO table2 (coltoreceive)
select coltocopy from table1
ALTER TABLE table1
DROP COLUMN coltocopy
END
ELSE
print 'no action'
第一次没关系,但是如果再次运行此脚本,我会遇到类似的错误
Invalid column name 'coltocopy'.
IF COL_LENGTH('table1','coltocopy')NOT NULL不起作用吗? 与 IF EXISTS 命令相同的结果
答案 0 :(得分:1)
第二次尝试失败,因为您在第一次尝试中放弃了coltocopy
,这意味着SELECT coltocopy FROM table1
不再是有效的语句。没关系,如果coltocopy
不存在,脚本实际上不会达到该点,引擎仍将检查整个脚本并对其进行错误处理。我相信您需要动态sql来避免该错误。
尝试一下:
DECLARE @SQL varchar(max) = 'INSERT INTO table2 (coltoreceive)
select coltocopy from table1
ALTER TABLE table1
DROP COLUMN coltocopy'
IF COL_LENGTH('table1', 'coltocopy') IS NOT NULL
BEGIN
EXEC (@SQL)
END
ELSE
PRINT 'no action'