22,209
社区成员
发帖
与我相关
我的任务
分享
--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
INSERT INTO dbo.BJJC
( xn ,
xq ,
B_ID ,
JC_ID ,
kc_ID
)
SELECT @xn ,
@xq ,
BJMC.ID ,
JCB1.ID ,
kcmc.ID
FROM BJMC
JOIN kcmc ON kcmc.xn = BJMC.XN
AND kcmc.xq = BJMC.XQ
JOIN JCB1 ON JCB1.XN = BJMC.XN
AND JCB1.XQ = BJMC.XQ
WHERE BJMC.XN = @xn
AND BJMC.XQ = @xq
--drop PROCEDURE if EXISTS P_JCB;
--GO
ALTER PROCEDURE dbo.P_JCB (
@xn VARCHAR (20) ,@xq INT )
AS
BEGIN
SET NOCOUNT ON;
--DECLARE @userId varchar(50)
DECLARE @count int
SET @count = 0
SELECT @count = count(*) FROM dbo.JCB where xn=@xn and xq=@xq
WHILE @count > 0
BEGIN
DECLARE @kcid INT ,@bID int,@jcid int --定义变量
--从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)
SET @count=@count-1
END
END