[英]The SQL Column name or number of supplied values does not match table definition
[英]SQL Server 2008 Column name or number of supplied values does not match table definition
我必须从在运行时定义名称的表中获取一些数据,所以我使用的方法是先将数据选择到全局临时表中,然后再选择到我的实际临时表中。 但是我得到列名或提供的值数与表定义不匹配。 不知道为什么要尝试将列匹配为select into语句。 我的代码是:
IF OBJECT_ID('tempdb.dbo.#tempData') IS NOT NULL
DROP TABLE #tempData
if object_id('tempdb..##temptbl') is not null
begin
drop table ##temptbl
end
execute('select * INTO ##temptbl from Repo.dbo.'+@tableName)
select * INTO #tempData from ##temptbl
谁能告诉我我在做什么错?
您似乎错过了第一条IF语句的begin ... end。 这可能会使全局临时表的删除失败,因为它仍在计算第一部分。
IF OBJECT_ID('tempdb.dbo.#tempData') IS NOT NULL
BEGIN
DROP TABLE #tempData
END
GO
IF object_id('tempdb..##temptbl') IS NOT NULL
BEGIN
DROP TABLE ##temptbl
END
EXECUTE('select * INTO ##temptbl from Repo.dbo.'+@tableName)
SELECT * INTO #tempData FROM ##temptbl
simpe use this
declare @tableName nvarchar(50) = 'tblTest'
IF OBJECT_ID('tempdb.dbo.#tempData') IS NOT NULL
DROP TABLE #tempData
IF OBJECT_ID(N'tempdb..##temptbl') IS NOT NULL
BEGIN
DROP TABLE ##temptbl
END
execute('select * INTO ##temptbl from dbo.'+ @tableName)
select * from ##temptbl
以下查询可能会解决您的问题:-
declare @tableName varchar(50) = 'Test'
IF OBJECT_ID('tempdb.dbo.#tempData') IS NOT NULL
DROP TABLE #tempData
IF OBJECT_ID('tempdb.dbo.##temptbl') IS NOT NULL
DROP TABLE ##temptbl
execute('select * INTO ##temptbl from dbo.'+@tableName)
select * INTO #tempData from ##temptbl
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.