将数据从临时 table 插入永久 table

Inserting data from a temp table into a permanent table

我的目标是找出两个 table 之间的差异并将结果放入永久 table。

密码是:

BEGIN
CREATE TABLE #TempTable ([number] nvarchar(255))
(
SELECT [number] FROM [TABLE_X] WHERE [TABLE_X.number] 
EXCEPT
SELECT [number] FROM [TABLE_Y] WHERE [TABLE_Y.number] 
) 
EXECUTE sp_executesql N'INSERT INTO #TempTable ([number])'
INSERT INTO [Error_messages]
SELECT 'TABLE_X','Table', number+' is missing from the [TABLE_X], but can be found in [TABLE_Y]' ,GETDATE() FROM #TempTable
DROP TABLE #TempTable
END

虽然我可以看到第一部分成功 运行,但第二部分崩溃了,我收到了不正确的语法消息,是因为我想混合使用动态插入和静态插入吗?

  • 您的查询有很多语法错误
  • 不清楚为什么需要动态 SQL,或者为什么需要临时 table
  • 你没有描述永久table应该是什么样子,我猜了
  • 根据您尝试存储的消息,EXCEPT 是错误的方式
CREATE TABLE NewTable
    (TableName sysname, ObjectType sysname, Message nvarchar(300), DateChecked datetime);

INSERT NewTable
    (TableName, ObjectType, Message, DateChecked)
SELECT 'TABLE_X','Table', number+' is missing from the [TABLE_X], but can be found in [TABLE_Y]' ,GETDATE()
(
SELECT [number] FROM [TABLE_Y]
EXCEPT
SELECT [number] FROM [TABLE_X]
) t