zoukankan      html  css  js  c++  java
  • 存储过程,函数,触发器

    一,存储过程

       1,存储过程的优点: 

        .能完成复杂的判断和运算。

        .执行速度快,可以重复使用。

       2,存储过程的创建和调用

         create procedure 名称(可以有参数)

         begin

          语句...

         end;

          (可以有多个 Begin-end)

         调用存储过程 : call 存储过程名。

       3,存储过程中的变量

          .必须先声明变量,才能使用变量,一个DECLARE只能声明一个变量。

            DECLARE 变量名 数据类型 DEFAULT 默认值;

          .赋值 

           SET 变量名=值;或者注入值

             SELECT name INTO my_name from book WHERE id=11;

          .作用范围

             类似java的变量,有全局变量和局部变量之分

       4,存储过程的参数

           CREATE DEFINER = `root`@`localhost` PROCEDURE (IN id_param int,...)

          IN 类型表示该参数只用于传入,传入的值为 常量。在调用过程中 不做修改和返回

          OUT类型表示该参数可用于传出值,传入的值必须为变量。在存储过程中可以被修改和返回。

            在存储过程内部,该参数初始值为 null,无论调用者是否给存储过程参数设置值。

          INOUT类型 ,兼有上两者的特性,INOUT参数可以向过程传递信息,如果值改变,则可再从过程外调用。

          如果只是把数据传给 存储过程,就用IN类型参数。

          如果只是从存储过程取返回值,就有OUT类型参数。

          如果需要把数据传给存储过程并再返回来,就用INOUT 类型。

       5,条件语句

        .if(条件)

         then

          语句...

         elseif(条件)

          then

           语句...

         else

          语句...

         end if;

       6,循环语句

        .while(条件) DO

         begin 语句...end;(可以有多个)

         END While;

        . repeat

          语句...

         until 条件

         end repeat;

       7,游标, 游标就是一个查询的结果集

       8, 在ORM框架中使用 存储过程。


    二,自定义函数  

       1,函数与存储过程的不同点是 函数必须得有返回值

        create function 函数名(参数...)


    三,触发器

       1,触发器相当于表的一个属性,当表中的数据发生变动时,触发器开始工作,在另一张指定的数据表中记录数据的变动

        CREATE TRIGGER dobook AFTER INSERT ON book
          FOR EACH ROW
          BEGIN
            INSERT INTO log_book(id_book,name_book,time_do)
              VALUES(new.id,new.name,NOW());
          END

        new 代表数据更新之后记录数据,old表示数据更新之前记录数据


    子程序特性

       .not deterministic 说明子程序中包含有不确定的函数
       .contains sql 包含读写sql语句
       .no sql 无sql语句 (只读)
       .reads sql data 只读 的sql 语句
       . modifies sql data 只写的sql语句
       . sql security SQL的安全性

  • 相关阅读:
    【Vegas原创】更改Linux系统默认语言
    【Vegas原创】RMAN还原一个损坏的user表空间的数据文件
    【Vegas原创】VMWare虚拟的Linux系统下,安装VMWare的增强工具
    【Vegas原创】在线修改redo.log文件的大小
    【Vegas原创】DB和DG的切换
    [工程备案]linux平台,用第三方开源库进行网页抽取和数据解析
    各种流派的正则表达式说明以及shell正则表达式
    python 自然语言处理编码转换
    工作总结2013
    linux上配置boost手记
  • 原文地址:https://www.cnblogs.com/m01qiuping/p/6395445.html
Copyright © 2011-2022 走看看