数据库——(17)存储过程
2017-07-26 21:48
176 查看
存储过程简称过程,procedure,一种用来处理数据的方式
存储过程是一种没有返回值的函数
创建过程
基本语法:
create procedure 过程名字([参数列表])
begin 过程体 end
查看过程
函数的查看方式完全适用于过程:关键字换成procedure
查看所有过程:show procedure status[like ‘pattern’];
查看过程创建语句:show create procedure 过程名;
调用过程
过程没有返回值,所以select不能访问。过程有一个专门调用的关键字:call
call 过程名([参数列表]);
修改过程&删除过程
过程只能先删除后新增
drop procedure 过程名;
过程参数
函数的参数需要指定数据类型,过程比函数更严格
过程有自己的类型限定:三种类型
in: 数据只是从外部传入给内部使用(值传递):可以是数值也可以是变量。
out :只允许过程内部使用(不用外部数据);给外部使用的(引用传递:外部的数据会先清空才会进入到内部):只能是变量。
inout:外部可以在内部使用,内部修改也可以给外部使用:典型的引用传递,只能传变量。
基本使用:
create procedure 过程名(in 形参名字 数据类型,out 形参名字 数据类型,inout 形参名字 数据类型)
调用:out和inout类型的参数必须传入变量,而不能是数值
存储过程对于变量的操作(返回)是滞后的:是在存储过程调用结束的时候,才会重新将内部修改的值赋值给外部传入的全局变量。
设置变量,调用过程
结果:
最后:在存储过程调用结束之后,系统会将局部变量重复返回给全局变量(out和inout)。
结果:
存储过程是一种没有返回值的函数
创建过程
基本语法:
create procedure 过程名字([参数列表])
begin 过程体 end
查看过程
函数的查看方式完全适用于过程:关键字换成procedure
查看所有过程:show procedure status[like ‘pattern’];
查看过程创建语句:show create procedure 过程名;
调用过程
过程没有返回值,所以select不能访问。过程有一个专门调用的关键字:call
call 过程名([参数列表]);
修改过程&删除过程
过程只能先删除后新增
drop procedure 过程名;
过程参数
函数的参数需要指定数据类型,过程比函数更严格
过程有自己的类型限定:三种类型
in: 数据只是从外部传入给内部使用(值传递):可以是数值也可以是变量。
out :只允许过程内部使用(不用外部数据);给外部使用的(引用传递:外部的数据会先清空才会进入到内部):只能是变量。
inout:外部可以在内部使用,内部修改也可以给外部使用:典型的引用传递,只能传变量。
基本使用:
create procedure 过程名(in 形参名字 数据类型,out 形参名字 数据类型,inout 形参名字 数据类型)
delimiter $$ create procedure pro1(in int_1 int,out int_2 int,inout int_3 int) begin -- 先查看三个变量 select int_1,int_2,int_3; -- int_2的值一定为NULL end $$ delimiter ;
调用:out和inout类型的参数必须传入变量,而不能是数值
-- 设置变量 set @int_1=1,@int_2=2,@int_3=3; call pro1(@int_1,@int_2,@int_3);
存储过程对于变量的操作(返回)是滞后的:是在存储过程调用结束的时候,才会重新将内部修改的值赋值给外部传入的全局变量。
delimiter $$ create procedure pro2(in int_1 int,out int_2 int,inout int_3 int) begin -- 先查看三个变量 select int_1,int_2,int_3; -- int_2的值一定为NULL,这3个当前是局部变量 -- 修改局部变量 set int_1 = 10; set int_2 = 100; set int_3 = 1000; -- 查看局部变量 select int_1,int_2,int_3; -- 查看全局变量 select @int_1,@int_2,@int_3; -- 修改全部变量 set @int_1 = 'a'; set @int_2 = 'b'; set @int_3 = 'c'; -- 查看全部变量 select @int_1,@int_2,@int_3; end $$ delimiter ;
设置变量,调用过程
set @int_1:=1,@int_2:=2,@int_3:=3; call pro2(@int_1,@int_2,@int_3);
结果:
最后:在存储过程调用结束之后,系统会将局部变量重复返回给全局变量(out和inout)。
select @int_1,@int_2,@int_3;
结果:
相关文章推荐
- 如何在deploy的时候 为数据库,表,存储过程 设置权限
- 数据库中存储过程的自动化生成
- Sql Server判断数据库、表、存储过程、函数是否存在
- 查某个数据库中所有包含某个关键词的用户存储过程 或 用户视图
- SQL Server 在多个数据库中创建同一个存储过程(Create Same Stored Procedure in All Databases)
- 删除mysql数据库中本地数据库失败(ERROR 1010 (HY000): Error dropping database(can't rmdir './jxc/',errno:17))
- 15-07-17 数据库练习题
- 数据库(2)——存储过程
- Visual C# 2008+SQL Server 2005 数据库与网络开发-- 4.6 存储过程
- 用存储过程清除数据库日志
- JSP数据库操作例程 - 存储过程
- 使用存储过程(PL/SQL)向数据库中存取BLOB对象——图片
- 数据库的索引、视图、触发器、存储过程、游标等概念的理解
- oracle 存储过程 转换为mysql存储过程 实例总结 (数据库有感篇一)
- sqlserver2005内部函数,存储过程,以及数据库角色
- mysql 数据库存储过程
- android(17)_数据存储与访问_SQLite数据库_修改数据库
- asp调用数据库存储过程
- 使用存储过程将文本导入数据库表
- 【django 学习笔记】17-集成已有的数据库和应用