数据库-存储过程

一、使用情况

    对于复杂业务,需要使用存储过程。
    对于简单sql无法解决问题的时候使用存储过程。
    操作大量表的时候。

二、优缺点
  优点:1、减少访问数据库连接次数,这是数据库执行效率需要考虑的一个重点。
     2、易维护,相对于复杂的程序代码,直接修改存储过程,更加快捷。
          3、存储过程,只在创建时进行编译,之后就不用编译了。而普通sql,每次执行都需要编译(因为他们和代码放在一起)。
       4、减轻编码工作,可以少些很多代码。
  缺点: 1、开发调试不方便,相对于程序代码,存储过程打断点进行调试,只能开发者去查看存储过程。
      2、如果需要使用中间数据,则不能使用存储过程。
      3、编写比较困难,有许多固定格式需要注意。
      4、移植性差,不同数据库厂家,存储过程的语法不同。

三、创建语法

   DELIMITER //
     CREATE  PROCEDURE  存储过程名(参数)
       存储过程参数
      BEGIN
                    过程体

      END
    //
  DELIMITER;

说明:

  1、存储过程名:pro_**
  2、参数:参数有三种类型。
    IN: 输入参数。调用该存储过程,必须附带该参数
    OUT: 输出参数。调用该存储过程后,返回的结果。
    INOUT: 输入输出参数。结合IN、OUT特性
    格式:OUT p_out int。p_out为参数名称,int为参数类型。 参数类型

   3、存储过程参数

     相当于java的变量,用于存储过程中的使用。

     格式:declare param_name type(参数类型)

     例子:declare total decimal(8) default 6;

   4、过程体

    4.1 可以写多个SQL语句。封号“;”隔开

      INSERT INTO table1 VALUES (variable1);

      select Sum(item_price*quantity)  from orderitems  where order_num = onumber

    4.2 使用存储过程参数

      SQL into 参数

      SET  变量 = “”

      例子:select Sum(item_price*quantity)  from orderitems  >where order_num = onumber  into total;

         select total into ototal;

           SET variable1 = 'birds';

      4.3 判断语句

      1、if  条件  then  SQL   elseif   SQL   else   SQL   end if;

       例子if   taxable   then

             select total+(total/100*taxrate) into total;

          end  if;

      2、case  when 条件 then SQL   when 条件  then  SQL  end case;

       例子:case

            when var=0 then insert into t values(30);

            when var>0 then ...

            when var<0 then

          end case;

      4.4 循环语句

      1、while 条件  do   SQL   end while;

       例子:while  var<6  do  

          insertinto t values(var);

          set <var=var+1;

        end  while;

        2、  loop  SQL   end loop;

       例子: LOOP
          IF  v_Hour>23  THEN
            v_Hour = 0;
          EXIT;
         END LOOP;

   5、调用存储过程

    call  存储过程名称(参数);

   6、删除存储过程

    drop procedure product;

 

 

     数值类型

   

    日期和时间类型

  

    字符串类型

  

猜你喜欢

转载自www.cnblogs.com/yorge/p/9343038.html