Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在表名为动态的表中插入数据?_Sql Server_Sql Server 2008_Sql Server 2008 R2 - Fatal编程技术网

Sql server 在表名为动态的表中插入数据?

Sql server 在表名为动态的表中插入数据?,sql-server,sql-server-2008,sql-server-2008-r2,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, B

我有一个要求,将数据插入表中,因为表名是动态的,所以实际查询如下:-

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

您必须为此构建动态查询。
insert-into-Table(col1,col2)exec('select*from-Generatebarcode'+@variable)
您的数据模型有问题。如果有多个表具有相同的列,但只有一个数字可以区分,这表明设计存在问题。听起来像是在尝试手动对表进行分区。让服务器来做。截至2016年,SQL Server在企业版中提供了分区。自2016年SP1以来,甚至SQL Server Expresspartitioning@BhatiaAshish我想插入到表中(这里的表名应该是动态的)有一些方法可以使用更快更安全的分区,例如分区视图或分区表。它在Inserted@PSKIt附近显示错误语法应该给出“无效的对象名‘Inserted’”,您可以在查询中使用表名“inserted”。您需要给出正确的表名,实际上这是一个触发器。在此之前,我从未得到过这个错误@PSK