对下图表数据进行增加操作时候,需要先插入数据,查到parentid,之后点上自己的id拼起来,自己的id也要sql获取,再更新自己的depPath,将parentid变为1.
数据库提供了存储过程,简化业务逻辑的处理,可以简单理解为一个脚本,将上面的多条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();