存储过程之多表添加记录
2015-05-03 21:28
183 查看
在接触MIS类型的项目,无可避免的要和数据库打交道,相信大家对于单个表的操作已经不陌生了(掌握好基本的SQL语句就行)。但是随着项目的优化和规范,原本的表中的字段可能要随着范式的进行而分割实体的属性,这样原本一张表就可以满足的功能,现在可能需要多张表同时操作才能进行。今天和大家分享下如何使用数据库自带的存储过程实现同时对多张表的添加记录功能。
存储过程:一组为了完成特定功能的SQL 语句集。创建名为Pro_studentQuery语句集(具体的优缺点和其他功能可以上网百度)。
原 理:传统的单表查询需要用到SQL语句。
例如对表T_Working查询UserName的记录:
Dim
sql As String=
"Select * From T_WorkLog WhereUserName=@UserName"
调用存储过程就相当于:
Dim sql
As String=
"Pro_studentQuery”
其中Pro_studentQuery为创建的SQL语句集名称。
方法:使用数据库自带的存储功能实现多表同时操作的功能。
创建存储过程:【打开SQL SERVER】【选择数据库】【可编程性】【存储过程】右击【新建存储过程】
进入如下界面:
例如要向T_Student、T_Card、T_Recharge三个表中插入相应的字段值,这事需要对相应的字段传入参数。
定义完后,在数据库中执行以下就可以调用了。
项目实现:在U层定义实体,赋值好参数,最终在D层调用存储过程,传入参数。
感受:个人觉得存储过程就是从各个表中抽出需要操作的字段,组合成一个虚拟的表。对于一些功能需要的数值只要给出参数就可以查询和操作了。变的只是SQL语句而已,其他的操作和之前单表查询都是一样的。
存储过程:一组为了完成特定功能的SQL 语句集。创建名为Pro_studentQuery语句集(具体的优缺点和其他功能可以上网百度)。
原 理:传统的单表查询需要用到SQL语句。
例如对表T_Working查询UserName的记录:
Dim
sql As String=
"Select * From T_WorkLog WhereUserName=@UserName"
调用存储过程就相当于:
Dim sql
As String=
"Pro_studentQuery”
其中Pro_studentQuery为创建的SQL语句集名称。
方法:使用数据库自带的存储功能实现多表同时操作的功能。
创建存储过程:【打开SQL SERVER】【选择数据库】【可编程性】【存储过程】右击【新建存储过程】
进入如下界面:
例如要向T_Student、T_Card、T_Recharge三个表中插入相应的字段值,这事需要对相应的字段传入参数。
<span style="font-family:Microsoft YaHei;font-size:18px;"><strong>CREATE PROCEDURE Pro_studentQuery @StudentName char(10), @StudentNo numeric(10,3), @Sex char(10), @Department char(10), @Grade char(10), @Class numeric(10,3), @CardNo numeric(10,3), @Cash numeric(10,3), @Explain char(10), @Head char(10), @Status char(10), @IsCheck char(10), @DateT date, @Time time, @Type char(10), @AddMoney numeric(10,3) AS BEGIN </strong></span>
<span style="font-family:Microsoft YaHei;font-size:18px;"><strong> SET NOCOUNT ON; ----下面是插入记录的语句,也可以写查询、删除等。 insert into T_Studnet (StudentName,StudentNo,Sex ,Department ,Grade ,Class ,CardNo )values(@StudentName,@StudentNo,@Sex,@Department,@Grade,@Class,@CardNo )</strong></span>
<span style="font-family:Microsoft YaHei;font-size:18px;"><strong> insert into T_Card (CardNo ,Cash,Explain,Head,Status,IsCheck,DateT,Time,Type)values(@CardNo,@Cash,@Explain,@Head,@Status,@IsCheck,@DateT,@Time,@Type)</strong></span>
<span style="font-family:Microsoft YaHei;font-size:18px;"><strong> insert into T_ReCharge (StudentName,CardNo,AddMoney,Cash,StautsT ,Head,DateT ,Time)values(@StudentName,@CardNo,@AddMoney,@Cash,@Status,@Head,@DateT,@Time)</strong></span>
<span style="font-family:Microsoft YaHei;font-size:18px;"><strong> END GO</strong></span>
定义完后,在数据库中执行以下就可以调用了。
项目实现:在U层定义实体,赋值好参数,最终在D层调用存储过程,传入参数。
感受:个人觉得存储过程就是从各个表中抽出需要操作的字段,组合成一个虚拟的表。对于一些功能需要的数值只要给出参数就可以查询和操作了。变的只是SQL语句而已,其他的操作和之前单表查询都是一样的。
相关文章推荐
- 为表添加,更改记录,创建存储过程的例子
- 利用存储过程判断添加记录不能重复
- SQL存储过程添加新记录
- MySQL实现创建存储过程并循环添加记录的方法
- 关于使用ant-design设计可动态添加FormItem的过程中遇到的问题记录。
- java.sql.SQLException: 关闭的连接问题及hibernate clob缓冲流存储的解决过程记录
- 在存储过程中取得刚刚插入的记录的某个字段,将其输出,由C#接受OUTPUT返回参数
- 应用存储过程添加数据
- 步步为营VS 2008 + .NET 3.5(10) - DLINQ(LINQ to SQL)之调用存储过程的添加、查询、更新和删除
- 存储过程实例 判断临时表是否存在 循环添加主外键两张表数据
- Sql Server 给表添加合计并统计金额的存储过程!(源代码分享)
- 自动生成表的添加更新数据的存储过程
- sql存储过程无重复添加修改
- 如何在存储过程中自动添加分区
- 存储过程写添加语句
- SQL Server与MySQL存储过程学习记录之一
- 不用游标从表中取出前N条记录的存储过程
- mysql 存储过程错误调试记录
- 树形结构的数据库实现,存储过程实现添加删除查询功能