数据库函数与存储过程
定义:存储过程和函数是事先经过编译并存储在数据库中的一段sql语句集合,调用存储过程和函数可以简化应用开发工作,提高数据库处理的效率。
函数和存储过程的区别:1.函数有且只有一个返回值,而存储过程不能有返回值。
2.函数只能有输入参数,而存储过程可以有 in out inout多个类型参数。
3.存储过程中的语句功能更丰富,实现更复杂的业务逻辑,而函数中通常不会使用 insert update delete等语句,只是完成查询的工作,受输入参数并返回一个结果,功能针对性比较强。
4.存储过程一般是作为一个独立的部分来执行(call调用)。而函数可以作为查询语句的一个部分来调用。
创建函数: delimiter 自定义符号 (一般用$$)
create function 函数名(形参列表) returns 返回类型
begin
函数体
return val
end 自定义符号
delimiter ;
例如: delimiter $$
create function test(a int,b int) returns int
begin
return a+b
end $$
delimiter ;
创建存储过程: delimiter $$
create procedure 存储过程名(形参)
begin
存储过程
end $$
delimiter ;
释义:delimiter 自定义符号 是为了在函数内写语句方便,制定了除;之外的符号作为函数书写结束标志。
形参列表:[in | out | inout ] 形参名 类型
in 输入 ,既可以接收变量,也可以接收常量,只能传入到存储过程里,改不了外面的值
out 输出 ,只能接收一个变量,接收的变量不能在内部使用,但是可以修改它的值,修改后外面的也变成这个值
inout 既可以输入又可以输出 等于 in+out
存储过程:若干SQL语句组成,如果只有一条SQL语句,也可以不写 delimiter begin end
创建变量:set @val =1;
局部变量方法 : 在函数内设置declare [变量名] [变量类型] 为局部变量,局部变量可以使用set 赋值 或者使用 into关键字。
如: declare t int
set @t=5;
select age from student where id=1 into t;
调用存储过程 : call 存储过程名(参数。。。)
调用函数:select 函数名字(参数。。。)
使用show status语句查看存储过程和函数的信息:
语法:show {procedure | function} status [like 存储过程 或存储函数的名字]
使用 show create 语句查看存储过程的定义:
语法:show create { procedure | function } 存储过程或函数名称
删除存储过程或函数:
语法: drop {procedure | function } 存储过程或函数名称
浙公网安备 33010602011771号