sql-server - 将数据插入到表中,其中表名称是动态的?

标签 sql-server sql-server-2008 sql-server-2008-r2

我有一个要求,将数据插入表中,其中表名称是动态的,这是实际的查询:-

INSERT INTO GENERATEBARCODE (BARCODEID, AMUID, GROSS_WT, TARE_WT, PRODUCTCODE, BATCHNO, PREVBARCODEID, LOT, UNAME, STAGE, STATUS)
    SELECT DISTINCT BARCODEID, 'DISPENSEHOLD', IT.GROSS_QUANTITY, IT.TARE_QUANTITY, BM.PRODUCT_CODE, IT.BATCH_NO, 'NA', LOT, 'NA', 'START', 'INPROCESS'
    FROM inserted IT INNER JOIN
         DISPENSE_HOLD BM
         ON IT.BATCH_NO = BM.BATCH_NO;

此处表名称动态变化 我有一个变量,它给出 01,02,03 等 应根据 Generatebarcode+'01' 等变量值将数据动态插入到表中。我该怎么做?

最佳答案

实现此目的的一种方法是使用如下动态查询。

DECLARE @VER VARCHAR(10)
SET @VER='01'
DECLARE @SQL NVARCHAR(MAX)
SET @SQL = N'INSERT INTO GENERATEBARCODE' + @VER + ' (BARCODEID, AMUID, GROSS_WT, TARE_WT, PRODUCTCODE, BATCHNO, PREVBARCODEID, LOT, UNAME, STAGE, STATUS)
    SELECT DISTINCT BARCODEID, ''DISPENSEHOLD'', IT.GROSS_QUANTITY, IT.TARE_QUANTITY, BM.PRODUCT_CODE, IT.BATCH_NO, ''NA'', LOT, ''NA'', ''START'', ''INPROCESS''
    FROM inserted IT INNER JOIN
         DISPENSE_HOLD BM
         ON IT.BATCH_NO = BM.BATCH_NO;'

EXECUTE sp_executesql @SQL

关于sql-server - 将数据插入到表中,其中表名称是动态的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49131540/

相关文章:

entity-framework - Entity Framework 4.2 exec sp_executesql 不使用索引(参数嗅探)

sql-server - 仅使用脚本向导为触发器生成脚本

sql - 如何获取该月的最后一天 (SQL Server)

sql-server - SQL Server 筛选内容中文 vs 英文

sql-server - SQL Server 拆分和表插入

sql-server - 使用 SQL Server 导出向导导出时如何选择表的特定列?

sql-server - 行大小开销

sql-server - Visual Studio Online 中的数据库集成测试

sql-server - 选择/删除重复项

sql - 存储 "Worked Hours"的正确数据类型是什么