如何解决检查是否存在游标后插入整个记录
我有以下脚本,该脚本使用游标将记录插入表中,如果它们不存在于该表中。这可行,但我想修改它以插入整个记录,而不必分别指定每个字段。是否可以引用整个记录并将其插入?
SET @Cursor = CURSOR FOR
SELECT [COMPANY],[LOCATION],[id] FROM [GG].[dbo].[LOCATION]
OPEN @Cursor;
FETCH NEXT FROM @Cursor INTO @COMPANY,@Location,@id;
WHILE @@FETCH_STATUS = 0
BEGIN
select @numFound = count(*) FROM [GG].[dbo].[gsLocation] where company = @COMPANY and location = @Location;
IF @numFound = 0
BEGIN
-- Want to be able to insert entire record instead of specifying fields
insert into [GG].[dbo].[gsLocation] (company,Location,id) values (@COMPANY,@id)
END
FETCH NEXT FROM @Cursor INTO @COMPANY,@id;
END
解决方法
您可以不用光标就简单得多:
Insert into [GG].[dbo].[gsLocation] (COMPANY,LOCATION,id)
Select L.COMPANY,L.LOCATION,L.id
From [GG].[dbo].[LOCATION] L
where not exists (Select * From [GG].[dbo].[gsLocation] where company = L.COMPANY and location = L.LOCATION)
指定列名称始终是一个好习惯。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。