用于层次结构数据库批量导入(Insert)的存储过程

 

用于层次结构数据库批量导入(Insert)的存储过程

编写这个简单的存储过程是由我正在做的一个项目需求引起的。它主要完成的功能是将两个级联表中的数据导入到另两个同结构的数据表中。

简化之后的数据库模型由四个表构成:

模型表m1

字段

数据类型

描述

m1_id

int

模型id(PK)

m1_name

varchar(50)

模型名称

 

子模型表m2

字段

数据类型

描述

m2_id

int

子模型id(PK)

m1_id

int

所属模型id(FK)

m2_name

varchar(50)

子模型名称

 

实例表i1

字段

数据类型

描述

i1_id

int

实例id(PK)

i1_name

varchar(50)

实例名称

 

子实例表i2

字段

数据类型

描述

i2_id

int

子实例id(PK)

i1_id

int

所属实例id(FK)

i2_name

varchar(50)

子实例名称

 

表m1和m2是父子的层次结构关系

表i1和表i2是也是父子的层次结构关系

在实际使用中i1,i2还会有其他的字段,它的其中一部分字段是由m1和m2导入的。这就是我要写一个存储过程要完成的功能。

为简单起见,上面所有的主键都是自增1的标识。

表关系图如下:

 

存储过程的代码如下,编译通过,测试成功!


set ANSI_NULLS ON set QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[sp_moduleInsert] -- Add the parameters for the stored procedure here @m1_id int, @i1_id int out AS DECLARE @m1_name varchar(50); BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here SELECT @m1_name=m1_name FROM m1 WHERE m1_id=@m1_id; INSERT INTO i1 (i1_name) VALUES (@m1_name) SELECT @i1_id=@@IDENTITY; INSERT INTO i2 (i1_id,i2_name) (SELECT @i1_id,m2_name FROM m2 WHERE m1_id=@m1_id); END

转载于:https://www.cnblogs.com/oyjj/archive/2009/04/17/2133012.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值