27,580
社区成员
发帖
与我相关
我的任务
分享
--游标循环插入数据,更新与插入类似
create table tb1(a int,b VARCHAR(100))
insert into tb1
select 1,'aaaaa' union all
select 2,'bbbbb' union all
select 3,'ccccc'
create table tb2(a int,b VARCHAR(100))
DECLARE @a int
DECLARE @b VARCHAR(100)
DECLARE MyCursor CURSOR
FOR
SELECT a,b FROM tb1
OPEN MyCursor
FETCH NEXT FROM MyCursor INTO @a,@b
WHILE (@@FETCH_STATUS = 0)
BEGIN
--循环插入一条记录
INSERT INTO tb2(a,b) VALUES(@a,@b)
FETCH NEXT FROM MyCursor INTO @a,@b
END
CLOSE MyCursor
DEALLOCATE MyCursor
--增加,更改
CREATE TABLE TB(ID INT PRIMARY KEY,NAME VARCHAR(20))
GO
INSERT INTO TB SELECT 1,'A'
INSERT INTO TB SELECT 2,'B'
CREATE PROC PROC_TB(@ID INT,@NAME VARCHAR(10))
AS
BEGIN
IF NOT EXISTS(SELECT 1 FROM TB WHERE ID=@ID)
INSERT INTO TB SELECT @ID,@NAME
ELSE
UPDATE TB SET ID=@ID,NAME=@NAME
WHERE ID=@ID
END
EXEC PROC_TB 3,'C'
SELECT * FROM TB
----
ID NAME
1 A
2 B
3 C