【发布时间】:2018-02-18 08:06:19
【问题描述】:
我编写了一个存储过程,我们将使用它来动态生成合并代码和同步数据集。
合并代码生成可靠,但无法执行
'无效的标识符'
错误。我认为这与我如何转义 varchar 值有关,但我似乎无法解决它
如果能了解我在哪里绊倒,我将不胜感激。
--CREATE TABLE dbo.temp_share_test
--(grp_id int not null,
--co_code varchar(10) not null,
--sp_no INT not null,
--sp_code varchar(10) not null,
--sp_type varchar(10),
--sp_colour varchar(10));
--alter table dbo.temp_share_test add constraint pk_temp_share_test
--primary key (grp_id, co_code, sp_no, sp_code);
--insert into dbo.temp_share_test (grp_id, co_code, sp_no, sp_code, sp_type, sp_colour)
--values
--(2,'A',1,'X',1,'GREEN'),
--(2,'A',2,'Y',2,'BLUE'),
--(2,'A',3,'X',3,'YELLOW');
DECLARE @sql VARCHAR(MAX)
SET @sql =
'MERGE dbo.temp_share_test AS t
USING (SELECT * FROM dbo.temp_share_test WHERE grp_id = 2 AND co_code = ''A'') AS s
ON (t.grp_id = 2 AND t.co_code = ''H'' AND t.sp_no = s.sp_no AND t.sp_code = s.sp_code)
WHEN NOT MATCHED THEN INSERT (grp_id, co_code,sp_code,sp_no,sp_type,sp_colour)
VALUES (2, ''H'',s.sp_code,s.sp_no,s.sp_type,s.sp_colour);'
exec @sql;
【问题讨论】:
-
不能添加相同的主键,插入的值必须是grp_id的1,2,3,4
标签: sql-server tsql merge