循环插入数据

wwfxgm wwfxgm 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
早上写了一个存储过程,但是搞不定大批量插入数据的问题。
关键就是如何一条一条记录循环插入。 批量插入,这个自增长ID。无法搞定。
--drop PROCEDURE if EXISTS P_JCB;
--GO

CREATE PROCEDURE dbo.P_JCB (
@xn VARCHAR (20) ,@xq INT )
AS
DECLARE @kcid INT ,@bID int,@jcid int --定义变量

begin TRANSACTION
--从jcb表获取学年(xn),学期(xq)的不重复班级名称,插入BJMC表
INSERT INTO dbo.BJMC (xn, xq, BJMC)
SELECT
XN,
XQ,
[班级名称]
FROM
dbo.jcb
WHERE
xn = @xn and xq=@xq
GROUP BY xn,xq,[班级名称] ;

SET @bID = @@identity;--获取插入数据的自增长ID。


--以下获取学年,学期的课程代码和课程名称,再插入kcmc表
INSERT INTO dbo.kcmc (xn, xq, kcdm, kcmc)
SELECT
XN,
XQ,
kcdm,
开设课程
FROM
dbo.JCB
WHERE
xn = @xn and xq=@xq
GROUP BY xn,xq,kcdm,开设课程
;
set @kcid = @@identity; --获取插入数据的自增长ID。

--以下获取学年,学期 不重复的教材信息 插入 JCB1表里面。
INSERT INTO dbo.JCB1 (
XN,
XQ,
ISBN,
JCMC,
CBS,
BB,
JCZZ,
XBX
)
SELECT
XN,
XQ,
教材ISBN,
教材名称,
出版社,
版别,
作者,
选必修
FROM
dbo.JCB
WHERE
xn=@xn and xq=@xq
GROUP BY xn,xq,教材isbn,教材名称,出版社,版别,作者,选必修
;
set @jcid=@@identity; --获取插入数据的自增长ID


--以下为中间表。因为是多对多关系(班级和教材关系是多对多),所以需要获取上面获取的各ID值。
INSERT INTO dbo.BJJC (xn, xq, B_ID, JC_ID, kc_ID)
VALUES(@xn,@xq,@bid,@jcid,@kcid) ;

--以下为中间表,因为是多对多关系(课程和教材,班级都是多对多),所以需要获取上面获取的各ID值。 这里我咋感觉完全没有必要这个表啊!!!
INSERT INTO dbo.kcjc (xn, xq, KC_ID, JC_ID, BJ_ID) values(@xn,@xq,@kcid,@jcid,@bid)
IF @@error = 0
BEGIN
SELECT '数据插入成功!';
COMMIT;
END
ELSE
BEGIN
ROLLBACK;
SELECT '不成功,回退';

END
...全文

相关推荐

评论 8
收藏 已收藏
分享
返回顶部
wwfxgm
疑难问题 22,298 成员 121,727 内容