向中间表中添加数据

来源:互联网 发布:vocaloid后期软件 编辑:程序博客网 时间:2024/04/29 14:02

 

--向员工表实体表和关系表中插数据的过程
Create proc [dbo].[AddEmployeeData]
(
  @DepID varchar(5000),   --部门ID号 (提供给插入关系表中的参数,这里的部门ID在前台传过来分割符组成的字符串)
  @EmployeeID int,  --员工ID号 (提供给插入关系表中的参数)
   
  @FName varchar(50), --员工姓名 (提供给插入员工实体表中的参数)
  @FAge int,   --员工年龄 (提供给插入员工实体表中的参数)
  @FBirthday datetime, --员工生日 (提供给插入员工实体表中的参数)
  @FJiGuan varchar(50), --籍贯     (提供给插入员工实体表中的参数)
  @FSexID int,      --性别ID   (提供给插入员工实体表中的参数)(性别下拉选中的下标+1即可) 
  @FNumber varchar(50)  --员工编号 (提供给插入员工实体表中的参数)    
)
as

begin
 begin tran myTran--声明一个事务

 --第一步:向员工实体表中插入数据
 insert into TEmployee(FName,FAge,FBirthday,FJiGuan,FSexID,IsAbled,FNumber,IsConfirmed)
 values(@FName,@FAge,@FBirthday,@FJiGuan,@FSexID,1,@FNumber,1)--插入的数据默认为可用的,未审核的
 
 --第二步:向员工和部门关系表中插入数据
 
  --准备数据
  declare myCursor cursor for   --定义游标
 


--备注:Sql技巧
--使用select value from SplitToTable('1,3,4,5,7',',')再结合游标的方式不如直接使用
--insert into Mapping_Employee_Department select value from SplitToTable('1,3,4,5,7',',')
--这样可以更简洁一些

 

 

select value from SplitToTable('1,3,4,5,7',',')

 --select value from SplitToTable('1,3,4,5,7',',')   --使用游标的对象(跟据需要填入select文)
  select value from SplitToTable(@DepID,'$')   --使用游标的对象(跟据需要填入select文)
 
 
  open myCursor                       --打开游标
  fetch next from myCursor into @DepID --将游标向下移行,获取的数据放入之前定义的变量@id,@name中
  while @@fetch_status=0           --判断是否成功获取数据
 
  begin
  --操作数据

declare @num int--设定一个计数变量,用于计算关系表中一共有几个ID为传过来的数据

set @num=0

set @num= (select count(1) from Mapping_Employee_Department where employeeID=@EmployeeID )
 if(@num>=1)
  begin
    delete from Mapping_Employee_Department where employeeID=@EmployeeID--把关系表中员工号为传送过来的员工ID数据全都删除掉
  end

 if(@num=0)
  begin
     insert into Mapping_Employee_Department(employeeID,departmentID)
     values(@EmployeeID,@DepID)           --进行相应处理(跟据需要填入SQL文)
  end
 
  fetch next from myCursor into @DepID  --将游标向下移行
  end
  close myCursor                   --关闭游标
  deallocate myCursor           --撤销游标
     
  if   @@error<>0   --捕获错误  
  Rollback  Tran myTran--事务的回滚
else
  COMMIT TRAN myTran  --提交事务
 
end

 

原创粉丝点击