数据库提供了存储过程,简化业务逻辑的处理,可以简单理解为一个脚本,将上面的多条sql写进去,代码调用时候只是调用存储过程,自己执行这些条数据

对下图表数据进行增加操作时候,需要先插入数据,查到parentid,之后点上自己的id拼起来,自己的id也要sql获取,再更新自己的depPath,将parentid变为1.

Springboot系统开发中的存储过程_存储过程

数据库提供了存储过程,简化业务逻辑的处理,可以简单理解为一个脚本,将上面的多条sql写进去,代码调用时候只是调用存储过程,自己执行这些条数据

 1.存储过程优点

1.可封装,隐藏复杂的逻辑

2.可回传值,可接收参数

3.无法使用Select指令执行,是子程序与查看表和数据库或者用户定义函数不同

4.可用于数据检验,强制实现商业逻辑

2.存储过程缺点

1.往往用于定制化特定数据库,完成特定的功能

2.性能调教和撰写,受限于各种数据库系统

3.存储过程的创建和调用

1.是具有名字的一段code,用来完成特定的功能

2.创建的存储过程保存在数据的数据字典中

3.1创建过程

CREATE
        [DEFINER = { user|CURRENT_USER}]
    PROCEDURE  sp_name (入参)
入参:
        [IN|OUT|INOUT] 参数名字 类型
characteristic:
        COMMENT 'string'
    |LANGUAGE SQL
    |....

routine_body:
        valid SQL routine statement

BEGIN

END

3.2关键语法

DELIMITER $$ //自定义声明语句结束符号,8.0后直接分号
CREATE PRODUCEDURE demo_in_parameter(IN p_int int)
BEGIN END
set @p_in=1 //变量赋值
DECLARE 1_int int unsigned default 4000000; //变量定义
create producedure 存储过程名
create function 存储过程体
call sp_name[(参数)]  调用存储过程

3.3注意事项

1.CREATEPRODUCEDURE 存储过程名 ([[IN|OUT|INOUT] 参数名 数据类型...]) 分别为传入值,传出值,传入&传出

即使创建过程没有参数,也必须在过程名字后面加小括号

2.确保参数的名字不等于列的名字,否则参数名会被当做列名处理

3.4变量定义

DECLARE 名字 [,数据类型...] datatype [DEFAULT value]

datatype是mysql数据库类型

 

例子

CREATE PROCEDURE GreetWorld1() SELECT CONCAT(@gretting,'world');
SET @gretting = 'Hello';
CALL GreetWorld1();