0
我们升级了SQL数据库中执行封闭在一个IF语句块,并不断有新列加入到升级版SQL试图即使条件不满足
例如表,
Table1
有Column1, Column2
列。
,一个额外的列添加
Table1
现在已经列Column1, Column2, Column3
我想创建一个脚本,可以在两个版本。这个脚本是这样的:
DECLARE @DBVersion varchar(25)
select @DBVersion = (select DBVersion from DBVersions)
IF @DBVersion = 'Old'
BEGIN
INSERT Table1 (Column1, Column2)
SELECT Value1, Value2
FROM TempTable
END
IF @DBVersion = 'New'
BEGIN
INSERT Table1 (Column1, Column2, Column3)
SELECT Value1, Value2, Value3
FROM TempTable
END
当我运行在旧的数据库版本的剧本,我得到一个错误
无效列名“栏3”
我想,这是因为SQL在执行之前编译脚本并且无法找到 有没有一种方法可以解决此问题并开发可在两个数据库版本中运行的脚本?
非常感谢
不确定您正在使用哪种RDBMS,但这会有所帮助。另外,你确定你正在做一个正确的平等吗?也就是说,有些语言使用'=='进行比较。当然,因为我不知道你的RDBMS或语言,所以我不知道。 – Marc
有没有这样的事情作为一个** SQL数据库** --- SQL只是*结构化查询语言* - 许多数据库系统使用的语言 - SQL不是数据库产品...我们真的需要知道什么数据库系统(以及您使用的是哪个版本).... –
该语句未执行。引擎试图解析脚本中的名称并失败,因此出现错误。 (名称解析发生在脚本执行之前。)要解决它,请使用@ Thomas的建议。 –