zoukankan      html  css  js  c++  java
  • 数据存储过程学习

    何为数据存储过程:是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。数据存储过程类似编程中的方法,它有他自己的方法名,方法要传递的变量和返回结果,所以存储过程有存储过程名、有存储过程参数,也有返回值。

    存储过程的优点:

    • 存储过程增强SQL语言的功能和灵活性
    • 保证数据的安全性和完成性
    • 通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全
    • 通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性
    • 在运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能
    • 可以降低网络通信量
    • 使体现企业规则的运算程序放入数据库服务器中,以便集中控制

    存储过程的缺点:

    • 存储过程,往往定制化于特定的数据库上,因为支持的编程语言不通。当切换到其他厂商的数据库系统时,需要重写原有的存储过程
    • 存储过程的性能调教与撰写,受限于各种数据库系统

    一、存储过程的创建和调用

    • 存储过程就是具有名字的一段代码,用来完成一个特定的功能
    • 创建的存储过程保存在数据库的数据字典中
    CREATE
        [DEFINER = { user | CURRENT_USER }]
     PROCEDURE sp_name ([proc_parameter[,...]])
        [characteristic ...] routine_body
     
    proc_parameter:
        [ IN | OUT | INOUT ] param_name type
     
    characteristic:
        COMMENT 'string'
      | LANGUAGE SQL
      | [NOT] DETERMINISTIC
      | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
      | SQL SECURITY { DEFINER | INVOKER }
     
    routine_body:
      Valid SQL routine statement
     
    [begin_label:] BEGIN
      [statement_list]
        ……
    END [end_label]
    创建存储过程
    CREATE DEFINER=`cosmo`@`%` PROCEDURE `cosmo`.`removeAccount`(IN `v_account` varchar(64))
    BEGIN
        call clearYygAccount(v_account); # 引用了另一个数据存储过程
        delete from ibps_party_unique where ACCOUNT_ = v_account;
        delete from ibps_party_user where ACCOUNT_ = v_account;
    END
    # 实现删除账号功能
    { CALL cosmo.removeAccount(:v_account) }
    # 运行,输入要删除的账号

    MySQL存储过程中的关键语法

    声明语句结束符,可以自定义:

    DELIMITER $$
    或
    DELIMITER //

    声明存储过程:

    CREATE PROCEDURE demo_in_parameter(IN p_in int)

    存储过程开始和结束符合:

    BEGIN .... END 

    变量赋值:

    SET @p_in=1

    变量定义:

    DECLARE 1_int int unsigned default 4000000;

    创建mysql存储过程、存储函数:

    create procedure 存储过程名(参数)

    存储过程体:

    create function 存储函数名(参数)

    实例

    CREATE DEFINER=`root`@`localhost` PROCEDURE `demo1`.`delete_data`(IN para INT)
    BEGIN
            delete from shop_goods_demo
            where ID_ = para;
    END
    # 实现删除ID_值为指定值的行,数据存储过程之间可以互相调用,即在begin和end之间call存储方法名即可
  • 相关阅读:
    Python学习-if条件语句
    Python学习-变量
    认识Python
    win7分盘
    mysql环境变量配置
    mysql的下载及配置
    c# excel xls保存
    js 在线引用
    js layer.js
    vue day3 bootstrap 联动下拉
  • 原文地址:https://www.cnblogs.com/marvintester/p/14585057.html
Copyright © 2011-2022 走看看