【机房重构】——存储过程

  机房到了末尾的阶段,也开始了总结。接触了很多的新知识,也了解了很多之前没有细究考量的内容。首先讲解存储过程的内容,我在重构的时候多表操作时使用的存储过程,方便操作。进入正题。。

定义:

     存储过程:一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样就可以提高存储过程的性能。存储过程可以包含数据操纵语句、变量、逻辑、控制语句等。

使用前提:

1.当一个事务涉及到多个SQL语句时或者涉及到对多个表的操作时就要考虑用存储过程;
2.当在一个事务的完成需要很复杂的商业逻辑时(例如,对多个数据的操作,对多个状态的判断更改等)要考虑;
3.还有就是比较复杂的统计和汇总也要考虑,但是过多的使用存储过程会降低系统的移植性。

优点:

1、执行速度更快
2、允许模块化程序设计
3、提高系统安全性
4、减少网络流通量

缺点:

1、存储过程本质上是面向过程的,这是致命伤。
2、不便于调试,没有很好的调试器。

格式:


1、创建存储过程  
               create procedure sp_name或create proc sp_name 
               @[参数名] [类型],@[参数名] [类型]
               
               as
               begin
                   .........
               end
        2、调用存储过程
              exec sp_name [参数名]
        3、删除存储过程
              drop procedure sp_name
        4、不能在一个存储过程里面删除另一个存储过程,但是可以调用其他存储过程。

例子:
ALTER PROCEDURE [dbo].[pro_Offline]
	@CardID char(10),  
  --  @Status char(8),  
    @OffDate nchar(10),  
    @OffTime nchar(10),  
    @ConsumeTime char(10),  
    @ConsumeCash numeric(18,1),  
    @Cash char(10)  
AS
BEGIN
	SET NOCOUNT ON;

     update T_Line  set OffDate =@OffDate ,OffTime =@OffTime ,ConsumeMoney =@ConsumeCash ,ConsumeTime =@ConsumeTime where CardID = @CardID  
     update T_Card  set Cash =@Cash where CardID =@CardID  
END

   总结:其实本该在首次使用的第一时间,就写出总结,各种懒癌手癌。欠下的总是要还的。最后。愿世界不辜负每一个有梦且努力的小孩儿。。

你可能感兴趣的:(【机房重构】——存储过程)