【转】MYSQL入门学习之十二:存储过程的基本操作

转载地址:http://www.2cto.com/database/201212/177380.html

存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合。可将其视为批文件,虽然它们的作用不仅限于批处理。
 www.2cto.com

使用存储过程需要MySQL5及以后的版本支持。

一、为什么要使用存储过程

通过把处理封闭在容易使用的单元中,简化复杂的操作;

将一系列处理步骤放到同一存储过程中,保证了数据的完整性和操作的安全性;

简化对变更的管理;

提高性能。使用存储过程比使用单独的SQL语句要快;

存在一些只能用在单个请求中的MySQL元素和特性,存储过程可以使用它们来编写功能更强更灵活的代码;

二、基本操作

1、创建存储过程

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

[characteristic ...]
routine_body

proc_parameter:

[ IN | OUT | INOUT ] param_name
type

示例:

[sql]

mysql>create
procedure sp_test()

->begin

->    select userid,username from newname where
userid=215;

->end

->//

2、执行存储过程

CALL sp_name;

示例:

[sql]

mysql> call sp_test();

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

| userid | username |

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

|    215 | NULL     |

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

3、删除存储过程

DROP PROCEDURE [ IF EXISTS ] sp_name;

示例:

[sql]

mysql> drop procedure if exists sp_test;

4、查看存储过程创建信息

SHOW CREATE PROCEDURE sp_name;

示例:

[sql]

mysql> show create procedure sp_test;

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

| Procedure | sql_mode | Create Procedure        
                     
        | character_set_client | collation_connection |
Database Collation |

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

| sp_test   |          | CREATE
DEFINER=`root`@`localhost` PROCEDURE `sp_test`()

begin

select userid,username from newname where userid=215;

end | latin1               |
latin1_swedish_ci    | latin1_swedish_ci  |

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

5、查看存储过程状态

SHOW PROCEDURE STATUS [ LIKE ‘‘ ];

示例:

[sql]

mysql> show procedure status like ‘sp_test‘;

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

| Db   | Name    | Type      | Definer  
     | Modified            |
Created             | Security_type | Comment |
character_set_client |

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

| test | sp_test | PROCEDURE | [email protected] | 2012-12-17 23:57:38 |
2012-12-17 23:57:38 | DEFINER       |        
| latin1               |

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

www.2cto.com

6、使用存储过程参数

示例:

[sql]

mysql> delimiter //

mysql> create procedure sp_type_cnt(

->     IN in_type int,

->     OUT out_cnt int

-> )

-> begin

->     select count(*)

->     from newname

->     where type = in_type

->     into out_cnt;

-> end;

-> //

mysql> delimiter ;

mysql> call sp_type_cnt(0,@cnt);

mysql> select @cnt;

+------+

| @cnt |

+------+

|  159 |

+------+

时间: 2024-10-05 23:35:45

【转】MYSQL入门学习之十二:存储过程的基本操作的相关文章

【转】MYSQL入门学习之十一:触发器的基本操作

转载地址:http://www.2cto.com/database/201212/176781.html 触发器是MySQL响应以下任意语句而自动执行的一条MySQL语句(或位于BEGIN和END语句之间的一组语句):  www.2cto.com DELETE: INSERT: UPDATE: 使用触发器,需要MySQL5或之后的版本支持. 一.触发器基本操作 1.创建触发器 创建触发器时,需要给出4条信息: 唯一的触发器名:(虽然MySQL5允许不同的表上的触发器名称相同,但一般最好不要这么做

salesforce 零基础开发入门学习(十二)with sharing 、without sharing 、无声明区别

在salesforce中,声明类大概可以分成三类:分别是可以声明为with sharing,without sharing,以及两者均不声明. 1 public with sharing class A {} 2 3 public without sharing class B{} 4 5 public class C{} 三者区别如下: with sharing:类声明称with sharing类型,则需要走sharing settings中的sharing rules: without sh

Mysql学习之十二:JDBC连接数据库之DriverManager方法

JDBC连接数据库 ?创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的静态方法forName(String  className)实现. 例如: try{ //加载MySql的驱动类 Class.forName("com.mysql.jdbc.Driver") ; }catch(ClassNotFoundException e){ Sy

【转】MYSQL入门学习之三:全文本搜索

转载地址:http://www.2cto.com/database/201212/173873.html 一.理解全文本搜索 www.2cto.com 1.MyISAM支持全文本搜索,而InnoDB不支持. 2.在使用全文本搜索时,MySQL不需要分别查看每个行,不需要分别分析和处理每个词.MySQL创建指定列中各词的一个索引,搜索可以针对这些词进行.这样MySQL可以快速有效地决定哪些词匹配,哪些词不匹配,它们匹配的频率,等等. 二.使用全文本搜索 1.为了进行全文本搜索,必须索引被搜索的列,

hbase 学习(十二)集群间备份原理

集群建备份,它是master/slaves结构式的备份,由master推送,这样更容易跟踪现在备份到哪里了,况且region server是都有自己的WAL 和HLog日志,它就像mysql的主从备份结构一样,只有一个日志来跟踪.一个master集群可以向多个slave集群推送,收到推送的集群会覆盖它本地的edits日志. 这个备份操作是异步的,这意味着,有时候他们的连接可能是断开的,master的变化不会马上反应到slave当中.备份个格式在设计上是和mysql的statement-based

【OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑

本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/25560901 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 知乎:http://www.zhihu.com/people/mao-xing-yun 邮箱: [email protected] 写作当前博文时配套使用的OpenCV版本: 2.4.9 本篇文章中,我们将一起学习OpenCV中

【转】MYSQL入门学习之十三:自定义函数的基本操作

转载地址:http://www.2cto.com/database/201212/177382.html 一.自定义函数(UDF)的特性和功能  www.2cto.com 函数能分返回字符串,整数或实数; 可以定义一次作用于一行的简单函数,或作用于多行的组的集合函数; 二.基本操作 1.创建自定义函数 CREATE [AGGREGATE] FUNCTION function_name RETURNS {STRING|INTEGER|REAL} BEGIN //函数实现的语句 END; aggre

Swift学习笔记十二:下标脚本(subscript)

下标脚本就是对一个东西通过索引,快速取值的一种语法,例如数组的a[0].这就是一个下标脚本.通过索引0来快速取值.在Swift中,我们可以对类(Class).结构体(structure)和枚举(enumeration)中自己定义下标脚本的语法 一.常规定义 class Student{ var scores:Int[] = Array(count:5,repeatedValue:0) subscript(index:Int) -> Int{ get{ return scores[index];

#HTTP协议学习# (十二)理解转发与重定向

本文转自:http://blog.csdn.net/meiyalei/article/details/2129120  生动清晰 解释一 转发是服务器行为,重定向是客户端行为.为什么这样说呢,这就要看两个动作的工作流程: 转发过程:客户浏览器发送http请求---->web服务器接受此请求-->调用内部的一个方法在容器内部完成请求处理和转发动作---->将目标资源发送给客户:在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的r