大型电商网站建设,wordpress如何做产品页,一般营销方式三大步骤,五百亿网站搬家公司MySQL的存储过程蛮啰嗦的#xff0c;与MSSQL或者Oracle的存储过程相比#xff0c;如果没有显式指定#xff0c;他会隐含地指定一系列特性(characteristic)的默认值来创建存储过程通常在使用图形界面工具进行存储过程编写的时候#xff0c;图形界面工具会自动加上这部分内容…MySQL的存储过程蛮啰嗦的与MSSQL或者Oracle的存储过程相比如果没有显式指定他会隐含地指定一系列特性(characteristic)的默认值来创建存储过程通常在使用图形界面工具进行存储过程编写的时候图形界面工具会自动加上这部分内容比如用HeidiSQL创建存储过程的时候会自动生成这些特性(characteristic)的默认值。但是这些特性究竟是干啥的有什么影响一直没有怎么弄清楚。LANGUAGE SQL存储过程语言默认是sql说明存储过程中使用的是sql语言编写的暂时只支持sql后续可能会支持其他语言NOT DETERMINISTIC是否确定性的输入就是确定性的输出默认是NOT DETERMINISTIC只对于同样的输入输出也是一样的当前这个值还没有使用CONTAINS SQL提供子程序使用数据的内在信息这些特征值目前提供给服务器并没有根据这些特征值来约束过程实际使用数据的情况说白了就是没有使用的包括以下四种选择1.CONTAINS SQL表示子程序不包含读或者写数据的语句2.NO SQL 表示子程序不包含sql3.READS SQL DATA 表示子程序包含读数据的语句但是不包含写数据的语句4.MODIFIES SQL DATA 表示子程序包含写数据的语句。SQL SECURITY DEFINER用来指定存储过程是使用创建者的许可来执行还是执行者的许可来执行默认值是DEFINERDEFINER 创建者的身份来调用对于当前用户来说如果执行存储过程的权限且创建者有访问表的权限当前用户可以成功执行过程的调用的说白了就是当前用户调用存储过程存储过程执行的具体操作是借助定义存储过程的user的权限执行的。INVOKER 调用者的身份来执行对于当前用户来说如果执行存储过程的权限以当前身份去访问表如果当前身份没有访问表的权限即便是有执行过程的权限仍然是无法成功执行过程的调用的。说白了就是当前用户调用存储过程只有当前用户有执行存储过程中涉及的对象的操作的权限的时候才能成功执行。COMMENT ”存储过程的注释性信息写在COMMENT里面这里只能是单行文本多行文本会被移除到回车换行等一个字扯为什么说这个扯淡呢通常情况下楼主会注释一个调用存储过程的示例在备注里以免自己活着别人在调试的时候参数很多的时候可以很快调用起来麻烦写半天参数之类的— 因此就会存在类似如下的注释,但是注释中的语句会被全部保存成一行格式给抹掉了/*set p_parameter1 ‘abc’;set p_parameter2 200;call mysql_procedure(p_parameyter1,p_parameter2)*/以下是一个存储过程的demodelimiter 仅仅是让存储过程知道遇到delimiter定义的字符的时候是结束的标记。话说MySQL不支持匿名块就算了定义存储过程的时候什么时候结束他自己都解析不出来delimiter KKKKKKKK(当然是fuck也行)CREATE DEFINERroot% PROCEDURE porcedureName(in p_parameter1 varchar(200),in p_parameter2 int,out p_outparameter int)-- 存储过程语言默认是sql说明存储过程中使用的是sql语言编写的暂时只支持sql后续可能会支持其他语言LANGUAGE SQL-- 是否确定性的输入就是确定性的输出默认是NOT DETERMINISTIC只对于同样的输入输出也是一样的当前这个值还没有使用NOT DETERMINISTIC-- 提供子程序使用数据的内在信息这些特征值目前提供给服务器并没有根据这些特征值来约束过程实际使用数据的情况说白了就是没有使用的-- ONTAINS SQL表示子程序不包含读或者写数据的语句-- NO SQL 表示子程序不包含sql-- READS SQL DATA 表示子程序包含读数据的语句但是不包含写数据的语句-- MODIFIES SQL DATA 表示子程序包含写数据的语句CONTAINS SQL-- 用来指定存储过程是使用创建者的许可来执行还是执行者的许可来执行默认值是DEFINER-- DEFINER 创建者的身份来调用如果创建者有权限访问存储过程中的表调用者有执行过程的权限就可以执行-- INVOKER 调用者的身份来执行取决于调用是否有执行过程执行过程中sql语句对应的权限SQL SECURITY DEFINER-- 存储过程的注释性信息写在COMMENT里面这里只能是单行文本多行文本会被移除到回车换行等一个字扯-- 为什么说这个扯淡呢-- 通常情况下楼主会注释一个调用存储过程的示例在备注里以免自己活着别人在调试的时候参数很多的时候调用起来麻烦写半天参数之类的-- 因此就会存在类似如下的注释,但是注释中的语句会被全部保存成一行格式给抹掉了/*set p_parameter1 abc;set p_parameter2 200;call mysql_procedure(p_parameyter1,p_parameter2)*/COMMENT beginselect * from user where id 100;endKKKKKKKK(delimiter是fuck的话这里就是fuck了结尾的标记而已)参考《深入浅出MySQL》作者MSSQL123