SQL Server 从表变量插入临时表
Posted
技术标签:
【中文标题】SQL Server 从表变量插入临时表【英文标题】:SQL Server Insert Into Temp table from a table variable 【发布时间】:2015-09-16 09:34:22 【问题描述】:我需要将表变量中的数据插入到临时表中,但它给了我以下错误。
消息 208,级别 16,状态 0,过程 sp_CreateScenario_q2,第 70 行 无效的对象名称“#tmpp1”。
这里是代码
IF OBJECT_ID('tempdb..#tmpp1') IS NOT NULL
DROP TABLE #tmpp1
INSERT INTO #tmpp1
SELECT
[PlanningHierarchyId]
,[ProductReferenceId]
,[PlanningYear]
,[PlanningSeason]
,[UpdatedBy]
FROM
@paramTable
有什么办法吗?
【问题讨论】:
【参考方案1】:因为您删除临时表然后尝试插入其中,所以出现错误“无效对象名称 '#tmpp1”。
尝试使用:
IF OBJECT_ID('tempdb..#tmpp1') IS NOT NULL
DROP TABLE #tmpp1
SELECT
[PlanningHierarchyId]
,[ProductReferenceId]
,[PlanningYear]
,[PlanningSeason]
,[UpdatedBy]
INTO #tmpp1
FROM @paramTable
【讨论】:
【参考方案2】:你正在丢桌子。要么使用CREATE
创建一个,要么使用select * into
而不是insert into
IF OBJECT_ID('tempdb..#tmpp1') IS NOT NULL
DROP TABLE #tmpp1
SELECT
[PlanningHierarchyId]
,[ProductReferenceId]
,[PlanningYear]
,[PlanningSeason]
,[UpdatedBy] into #tmpp1
FROM @paramTable
【讨论】:
【参考方案3】:当表已经存在时使用插入,使用 SELECT into from 。当您尝试插入临时表时,临时表不存在。
参考:INSERT INTO vs SELECT INTO
IF OBJECT_ID('tempdb..#tmpp1') IS NOT NULL
DROP TABLE #tmpp1;
SELECT
[PlanningHierarchyId]
,[ProductReferenceId]
,[PlanningYear]
,[PlanningSeason]
,[UpdatedBy]
INTO #tmpp1
FROM @paramTable
【讨论】:
以上是关于SQL Server 从表变量插入临时表的主要内容,如果未能解决你的问题,请参考以下文章