我想根据SQL 2005中的条件结果填充临时表。临时表将具有相同的结构,无论哪种方式,但将填充使用一个不同的查询取决于条件。下面的简化示例脚本失败在ELSE
块INSERT INTO
的语法检查用的错误:SQL插入临时表在If和Else块中
已经有一个在数据库中名为 “#MyTestTable”的对象。
DECLARE @Id int
SET @Id = 1
IF OBJECT_ID('tempdb..#MyTestTable') IS NOT NULL DROP TABLE #MyTestTable
IF (@Id = 2) BEGIN
SELECT 'ABC' AS Letters
INTO #MyTestTable;
END ELSE BEGIN
SELECT 'XYZ' AS Letters
INTO #MyTestTable;
END
我可以在IF/ELSE
语句之前创建临时表,然后就做在条件块INSERT SELECT
语句,但该表将有很多列的,我是想有效率了。这是唯一的选择吗?或者有什么方法可以做到这一点?
谢谢, 马特
我的回答既不是建议使用动态SQL,也不是建议使用动态SQL - 事实上,它表明动态SQL *不能用于解决问题,并得出结论:在数据插入之前特别声明临时表可能是最好的选择。 – 2014-06-04 14:11:15
您可以使用动态SQL并插入全局临时表(## MyTesttable),然后删除全局表。将添加为一个单独的答案 – Rym 2017-07-26 09:43:57