`
liss
  • 浏览: 842478 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

MYSQL存储过程实例

阅读更多
存储过程:

存储过程的创建:

CREATE PROCEDURE sp_name ([proc_parameter[,...]])

    [characteristic ...] routine_body



CREATE FUNCTION sp_name ([func_parameter[,...]])

    RETURNS type

    [characteristic ...] routine_body



    proc_parameter:

    [ IN | OUT | INOUT ] param_name type

   

    func_parameter:

    param_name type



type:

    Any valid MySQL data type



characteristic:

    LANGUAGE SQL

  | [NOT] DETERMINISTIC

  | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }

  | SQL SECURITY { DEFINER | INVOKER }

  | COMMENT 'string'



routine_body:

    Valid SQL procedure statement or statements





显示创建的存储过程或函数:

SHOW CREATE {PROCEDURE | FUNCTION} sp_name



删除存储过程或函数:

DROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name



显示存储过程或函数状态:

SHOW {PROCEDURE | FUNCTION} STATUS [LIKE 'pattern']

存储过程的调用:

CALL sp_name([parameter[,...]])



BEGIN ... END复合语句:

[begin_label:] BEGIN

    [statement_list]

END [end_label]



DECLARE语句:

DECLARE仅被用在BEGIN ... END复合语句里,并且必须在复合语句的开头,在任何其它语句之前。

光标必须在声明处理程序之前被声明,并且变量和条件必须在声明光标或处理程序之前被声明。

DECLARE var_name[,...] type [DEFAULT value]



SELECT ... INTO语句:

SELECT col_name[,...] INTO var_name[,...] table_expr

这个SELECT语法把选定的列直接存储到变量。因此,只有单一的行可以被取回。

SELECT id,data INTO x,y FROM test.t1 LIMIT 1;



注意:
mysql> delimiter //

mysql> create function hello(s char(20)) returns char(50)

    -> return concat('Hello, ',s,'!');

    -> //

ERROR 1418 (HY000): This routine has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_routine_creators variable)

以下错误需要设置log_bin_trust_routine_creators变量的值
Mysql> set GLOBAL log_bin_trust_routine_creators=1;



实例1:

mysql> select * from a;              

+--------+------+

| a      | b    |

+--------+------+

| falcon | 223  |

| cs     | 500  |

+--------+------+

mysql> delimiter //

mysql> create procedure proc_sum_a(OUT sum INT)

    -> begin

    -> select sum(b) from a;

    -> end

    -> //

Query OK, 0 rows affected (0.01 sec)

mysql> delimiter ;

mysql> call proc_sum_a(@a);

+--------+

| sum(b) |

+--------+

|    723 |

+--------+

1 row in set (0.02 sec)



Query OK, 0 rows affected (0.02 sec)



实例2:

mysql> select * from a;

+----------+------+

| a        | b    |

+----------+------+

| falcon   | 223  |

| cs       | 500  |

| cs       | 500  |

| Falcon.C | 1508 |

+----------+------+

4 rows in set (0.00 sec)

mysql> create procedure proc_char_a (OUT str CHAR)  

    -> begin

    -> select * from a;

    -> end

    -> //

Query OK, 0 rows affected (0.00 sec)

mysql> call proc_varchar_a(@str) //

+----------+------+

| a        | b    |

+----------+------+

| falcon   | 223  |

| cs       | 500  |

| cs       | 500  |

| Falcon.C | 1508 |

+----------+------+

4 rows in set (0.00 sec)



实例3:

mysql>delimiter //

mysql> create function fun_hello(s char(20)) returns char(50)

    -> return concat('Hello, ',s,'!');

    -> //

Query OK, 0 rows affected (0.00 sec)



mysql> delimiter ;

mysql> select fun_hello('Falcon.C');

+-----------------------+

| fun_hello('Falcon.C') |

+-----------------------+

| Hello, Falcon.C!      |

+-----------------------+

1 row in set (0.00 sec)
分享到:
评论

相关推荐

    mysql存储过程实例

    MySQL 存储过程实例 MySQL 存储过程实例详细介绍了 MySQL 存储过程的开发步骤,本节将通过具体的实例讲解 PHP 是如何操纵 MySQL 存储过程的。 创建存储过程 存储过程的创建是 MySQL 存储过程的基础,MySQL 5.0 ...

    MySQL存储过程实例教程

    ### MySQL存储过程实例教程 #### 存储过程概念与优势 存储过程,作为数据库中一种预编译的SQL语句集合,旨在实现特定功能并存储于数据库内,用户仅需指定其名称及必要参数即可调用执行。这种设计极大地简化了...

    MySQL存储过程实例教程.doc

    MySQL存储过程实例教程 MySQL存储过程是数据库存储的一个重要的功能,它允许控制数据的访问方式,提供了灵活的编程方式,提高了数据库的处理速度和灵活性。本教程将详细介绍 MySQL 存储过程的概念、优点、创建和...

    mysql存储过程实例详解,pdf

    mysql存储过程实例详解

    PHP和MySQL存储过程实例

    根据给定的信息,我们可以深入探讨PHP与MySQL存储过程的相关知识点,包括如何在MySQL中使用`CONCAT`函数、创建存储过程以及如何通过PHP脚本来调用这些存储过程。 ### 使用 CONCAT 函数 #### 标题中的示例 ```sql ...

    SQL存储过程实例.doc

    在这个实例中,我们看到一个名为`Sum_wage`的存储过程,它的主要目的是对`ProWage`表中的工资进行加薪操作。 首先,存储过程的创建使用了`CREATE PROCEDURE`语句,定义了一个名为`Sum_wage`的过程,并接受三个参数...

    MySQL存储过程实例教程详解.docx

    MySQL存储过程是数据库管理系统提供的一种高级程序设计语言,允许用户在数据库中封装一系列复杂的操作,以便重复使用。在MySQL 5.0及后续版本中,存储过程被引入,极大地提升了数据库管理和应用程序的效率。本教程将...

    MYSQL的存储过程实例文档

    ### MySQL存储过程详解 #### 一、存储过程概述 存储过程是一种特殊类型的SQL代码集合,它们预先被编译并存储在数据库服务器上。用户可以通过指定存储过程名称并提供必要的参数来执行这些存储过程。这种机制提供了...

    php调用mysql存储过程实例分析

    ### PHP调用MySQL存储过程实例 在PHP中调用MySQL存储过程,通常使用`mysqli`扩展。在创建了存储过程后,我们可以通过PHP脚本来调用这些存储过程。以下是一个获取MySQL当前版本号的存储过程调用实例: ```sql ...

    mysql复杂存储过程实例(游标、临时表、循环、递归)

    本资源结合实例实现一个复杂的存储过程,存储过程中有用到游标、临时表、循环、递归等知识,sql文件附有实例数据表创建的sql语句。

    MySQL存储过程的异常处理方法

    本实例展示了如何在MySQL存储过程中实现异常处理,以捕获并处理可能出现的错误。 首先,我们注意到在创建存储过程`myProc`时,使用了`delimiter $$`来改变MySQL客户端的语句分隔符,这是为了在存储过程中使用多个...

    mysql存储过程之错误处理实例详解

    本文实例讲述了mysql存储过程之错误处理。分享给大家供大家参考,具体如下: 当存储过程中发生错误时,重要的是适当处理它,例如:继续或退出当前代码块的执行,并发出有意义的错误消息。其中mysql提供了一种简单的...

Global site tag (gtag.js) - Google Analytics