【发布时间】:2021-11-17 06:53:25
【问题描述】:
我创建了 2 个表并在我的源表中填充了值。
现在,我想将这些值动态填充到目标表中,并检查目标表中是否有任何值,然后删除所有这些值并从源中插入它们。
这是我没有执行的方法:
CREATE TABLE Customer
(
CustomerID int NOT NULL,
Customer_Name nvarchar(50) NULL,
Customer_Address nvarchar(50) NULL,
Contact int NULL,
Created_Date int NULL
)
CREATE TABLE Customer_new
(
CustomerID int NOT NULL,
Customer_Name nvarchar(50) NULL,
Customer_Address nvarchar(50) NULL,
Contact int NULL,
Created_Date int NULL
)
INSERT INTO Customer VALUES (1, 'Sarthak', 'cp192', 9560, 2022)
INSERT INTO Customer VALUES (2, 'Rashi', 'cp193', 9561, 2021)
INSERT INTO Customer VALUES (3, 'Rohan', 'cp194', 9562, 2020)
INSERT INTO Customer VALUES (4, 'Aman', 'cp195', 9564, 2019)
ALTER PROCEDURE spCustomera
@Source_table nvarchar(100),
@Dest_table nvarchar(100)
AS
BEGIN
DECLARE @Target_Schema NVARCHAR(30)
DECLARE @Source_Schema NVARCHAR(30)
SELECT TABLE_NAME, TABLE_SCHEMA
INTO #data
FROM INFORMATION_SCHEMA.columns
SELECT
@Dest_table = TABLE_NAME,
@Source_table = TABLE_NAME,
@Target_Schema =TABLE_SCHEMA,
@Source_Schema = TABLE_SCHEMA
FROM #data
DECLARE @SQL AS nvarchar(1000)
SET @SQL = (N'DELETE FROM ' + @Target_Schema + '.' + @Dest_table +
' INSERT INTO ' + @Target_Schema + '.' + @Dest_table +
' SELECT * FROM ' + @Source_Schema + '.' + @Source_table)
EXEC @SQL
END
EXEC spCustomera @Source_table = 'customer', @Dest_table = 'customer_new'
【问题讨论】:
标签: sql sql-server tsql dynamic-sql