繁体   English   中英

SQL Server 2008列名或提供的值数与表定义不匹配

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM