一:存储过程
存储程序包括存储函数和存储过程.存储过程有它独特的优势,存储过程大大地减少了业务系统与数据库的交互,一定程度降低了业务系统与数据库的耦合.还有执行效率高,编写方便,功能强大等等,但一定要注意其应用场景。一般使用与业务逻辑简单稳定的场景,不适用业务逻辑复杂经常变换的场景.如果表换个结构,要改很多存储过程,各有利弊吧.
存储过程基本语法:
CREATE PROCEDURE pro_name([IN|OUT|INOUT] param_name type)
[characteristics...]continue_body
pro_name代表存储过程名称
in表示输入参数,out表示输出参数,inout既可以输入又可以输出,param_name代表参数名称,type表示参数类型.
characteristics表示存储过程特性(规定一些注释信息,谁来维权,存储结果判断等...),
continue_body是sql代码的内容.
创建存储过程:统计所有员工数量的存储过程
CREATE PROCEDURE pro1(OUT param1 int)
BEGIN
SELECT COUNT(*)INTO param1 from employee;
END;
调用存储过程
CALL pro1(@param1);
SELECT @param1
查看存储过程
SHOW PROCEDURE STATUS LIKE 'p%';
SHOW CREATE PROCEDURE pro1;
修改存储过程:
ALTER {PROCEDURE | FUNCTION}pro_name[characteristics...]语句只能改变存储过程的特征,不能修改过程的参数以及过程体。
如果想做这样的修改,必须先使用DROP PROCEDURE 删除过程,然后使用and CREATE PROCEDURE重建过程.
删除存储过程
DROP PROCEDURE IF EXISTS db_name.produce_name;(就是数据库.存储过程名字)
二:存储函数
存储函数创建基本语法
CREATE FUNCTION func_name([func_parameter])
RETURNS type
[characteristics...]continue_body
创建根据id查询员工名称
CREATE FUNCTION func_test(parma1 INT)
return varchar2
is v_name nvarchar2;
BEGIN
select into v_name from employee where e_no=param1;
return v_name;
END;
存储函数查看
show FUNCTION STATUS LIKE 'func%'
SHOW CREATE FUNCTION mytest.func_test;
存储函数使用
select function_name(参数);
存储函数修改:
alter function function_name
[characteristics...]
删除存储函数
DROP function IF EXISTS db_name.function_name;(就是数据库.存储函数名字)