MySQL基础八之存储过程

来源:互联网 发布:国服lol有没有mac版 编辑:程序博客网 时间:2024/06/01 08:27


1.存储过程简介

1.1.概念:存储过程是SQL语句和控制语句预编译的集合,以一个名称存储作为一个单元处理(省去了语法分析和编译的过程提高了效率)。

1)增强了SQL语句的功能和灵活性

2)实现了较快的执行速度

3)减少了网络流量

1.2.

CREATE

[DEFINER = {user | CURRENT_USER}]

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

[characteristic ......] rotine_body

1)proc_paramete[IN | OUT | INOUT] param_name type

2)IN:表示该参数的值必须在调用改存储过程时候被指定,这个值不能被返回。

3)OUT:表示该参数的值可以被存储过程改变,并且可以返回。

4)INOUT:表示该参数调用时指定,并且可以被改变与返回。

5)过程体:和函数体差不多

1.3.创建不带参数的存储过程(查看版本信息)

CREATE

PROCEDURE sp1()

SELECT VERSION();

1.3.1.调用:CALL sp1()或者CALLsp1

1.4. 创建带有IN类型参数的存储过程(删除表记录)

CREATE

PROCENDURE sp2(IN col_name INT UNSIGNED)

BEGIN

DELETE FROM table_name WHERE where_condition;

END

//

1)col_name不能和数据库中的字段名相同,不然所有都会删除。

2)删除存储过程:DROP PROCENDURE sp_name

1.5.创建带有IN类型和OUT类型的存储过程(删除用户并返回用户总数)

CREATE

PROCENDRE sp3(IN col_name INT UNSIGNED, OUT col_name1 INT UNSIGNED )

BEGIN

DELETE FORM table_name WHERE where_condition;

SELECT COUNT(col_name) FROM table_name INTO col_name1

END

//

1)查询返回的参数:SELECT @nums;@为用户变量)

1.6.自定义函数和存储过程的区别

1)存储过程复杂一些,函数的针对性强

2)返回值个数不一样函数为一个,存储过程可以返回多个

3)存储过程都是独立运行的,而函数一般结合SQL一起使用

注明:存储的ALTER只能修改部分特性,如果要修改过程体,只能删除原有的存储过程再新建。

0 0