mysql存储过程含义_MySQL存储过程定义中的特性(characteristic)的含义
MySQL的存储过程蛮啰嗦的,与MSSQL或者Oracle的存储过程相比,如果没有显式指定,他会隐含地指定一系列特性(characteristic)的默认值来创建存储过程
通常在使用图形界面工具进行存储过程编写的时候,图形界面工具会自动加上这部分内容比,
如用HeidiSQL创建存储过程的时候,会自动生成这些特性(characteristic)的默认值。
但是这些特性究竟是干啥的,有什么影响,一直没有怎么弄清楚。
LANGUAGE SQL
存储过程语言,默认是sql,说明存储过程中使用的是sql语言编写的,暂时只支持sql,后续可能会支持其他语言
NOT DETERMINISTIC
是否确定性的输入就是确定性的输出,默认是NOT DETERMINISTIC,只对于同样的输入,输出也是一样的,当前这个值还没有使用
CONTAINS SQL
提供子程序使用数据的内在信息,这些特征值目前提供给服务器,并没有根据这些特征值来约束过程实际使用数据的情况,说白了就是没有使用的
包括以下四种选择
1.CONTAINS SQL表示子程序不包含读或者写数据的语句
2.NO SQL 表示子程序不包含sql
3.READS SQL DATA 表示子程序包含读数据的语句,但是不包含写数据的语句
4.MODIFIES SQL DATA 表示子程序包含写数据的语句。
SQL SECURITY DEFINER
用来指定存储过程是使用创建者的许可来执行,还是执行者的许可来执行,默认值是DEFINER
DEFINER 创建者的身份来调用,对于当前用户来说:如果执行存储过程的权限,且创建者有访问表的权限,当前用户可以成功执行过程的调用的
说白了就是当前用户调用存储过程,存储过程执行的具体操作是借助定义存储过程的user的权限执行的。
INVOKER 调用者的身份来执行,对于当前用户来说:如果执行存储过程的权限,以当前身份去访问表,如果当前身份没有访问表的权限,即便是有执行过程的权限,仍然是无法成功执行过程的调用的。
说白了就是当前用户调用存储过程,只有当前用户有执行存储过程中涉及的对象的操作的权限的时候,才能成功执行。
COMMENT ''
存储过程的注释性信息写在COMMENT里面,这里只能是单行文本,多行文本会被移除到回车换行等,一个字:扯
为什么说这个扯淡呢?
通常情况下,楼主会注释一个调用存储过程的示例在备注里,以免自己活着别人在调试的时候,参数很多的时候,可以很快调用起来,麻烦写半天参数之类的
-- 因此就会存在类似如下的注释,但是注释中的语句会被全部保存成一行,格式给抹掉了
/*
set @p_parameter1 = 'abc';
set @p_parameter2 = 200;
call mysql_procedure(@p_parameyter1,@p_parameter2)
*/
以下是一个存储过程的demo,delimiter 仅仅是让存储过程知道,遇到delimiter定义的字符的时候是结束的标记。
话说MySQL不支持匿名块就算了,定义存储过程的时候,什么时候结束他自己都解析不出来?
delimiter KKKKKKKK(当然是fuck也行)
CREATE DEFINER=`root`@`%` 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 ''
begin
select * from user where id = 100;
end
KKKKKKKK(delimiter是fuck的话,这里就是fuck了,结尾的标记而已)
mysql存储过程含义_MySQL存储过程定义中的特性(characteristic)的含义相关推荐
- mysql存储过程含义,MySQL存储过程定义中的特性(characteristic)的含义
存储过程语言,默认是sql,说明存储过程中使用的是sql语言编写的,暂时只支持sql,后续可能会支持其他语言 NOT DETERMINISTIC 是否确定性的输入就是确定性的输出,默认是NOT DET ...
- mysql 匿名块_MySQL存储过程定义中的特性(characteristic)的含义
MySQL的存储过程蛮啰嗦的,与MSSQL或者Oracle的存储过程相比,如果没有显式指定,他会隐含地指定一系列特性(characteristic)的默认值来创建存储过程 通常在使用图形界面工具进行存 ...
- mysql characteristic_MySQL存储过程定义中的特性(characteristic)的含义
MySQL的存储过程蛮啰嗦的,与MSSQL或者Oracle的存储过程相比,如果没有显式指定,他会隐含地指定一系列特性(characteristic)的默认值来创建存储过程 通常在使用图形界面工具进行存 ...
- mysql 存储过程 定时_MySQL存储过程和定时任务
什么是存储过程 存储例程是存储在数据库服务器上的一组sql语句,这些语句通过在查询中调用指定的名称来执行. 存储过程是存储在数据库中的一组SQL语句 存储过程是mysql中定义的方法 可以通过调用方法 ...
- mysql的存储过程原理_mysql存储过程原理与用法详解
本文实例讲述了Mysql存储过程原理与用法.分享给大家供大家参考,具体如下: 本文内容: 什么是存储过程 存储过程的创建 存储过程的使用 查看存储过程 修改存储过程 删除存储过程 首发日期:2018- ...
- mysql 函数 局部变量_MySQL 存储过程 存储函数 局部变量 游标 概念示例
一个存储过程是一个可编程的函数,它可以在MySQL中创建并保存.它是由一些SQL语句和一些特殊的控制结构语句组成. 当希望在不同的应用程序或平台上执行相同的函数,或者封装特定的功能时,存储过程是一个非 ...
- mysql 存储过程求和_MySQL - 存储过程和函数
MySQL - 存储过程和函数 创建和调用存储过程 -- 创建stu_group()存储过程,封装 分组查询总成绩,并按照总成绩升序排序的功能 -- 注意: DELIMITER 必须写在一行的最前面, ...
- mysql存储过程触发器_MySQL存储过程及触发器
一.存储过程 存储过程的基本格式如下: -- 声明结束符 -- 创建存储过程 DELIMITER $ -- 声明存储过程的结束符 CREATE PROCEDURE pro_test() --存储过程名 ...
- mysql存储过程调试_MYSQL存储过程调试过程
mysql不像oracle有plsqldevelper工具用来调试存储过程,所以有几种简单的方式追踪执行过程: 1.用一张临时表,记录调试过程: 2.直接在存储过程中,增加select xxx,在控制 ...
最新文章
- 山西计算机软考知识点,计算机软考考试必备知识点:数据标准化
- 算法 求和为n的连续正整数序列 C
- 潘通色卡tcx电子版_【收藏】最全“潘通色卡电子版”,只带手机对色一步到位!...
- 简述推荐系统中的矩阵分解
- Spring容器实例bean中的几个关键PostProcessor
- GDB调试之前的相关设置,会使程序调试起来,事半功倍
- PHP的基础{}[]()
- 如何在Python中建立回归模型
- mdb java_Java生成mdb文件(MS Access文件)
- java知识总结-25
- 系统分析师2020年真题解析
- tolua unity 报错_Unity3D热更新技术点——ToLua(上)
- EXCEL常规格式数字转换为日期时间格式的方法
- 灌区农业水价综合改革解决方案
- 【stm32f0】stm32 总中断的打开与关闭
- VASP计算弹性常数
- 有用的文章集锦(干货和有效知识)
- D - Squirrel and chestnut(二分)
- 准备客串一回Java讲师
- 深度学习在医学图像配准中的应用
热门文章
- 非x面容解锁插件ios13_ios13近期消息汇总,苹果要放大招??
- linux pfn,ARM Linux下的page和pfn之间转换的宏。
- c++ vector嵌套传参
- bat面试题 python 单链表反转排序
- Tensorflow学习: 乘法demo
- ffmpeg + x264+ x265 + libde265 + opengl es display
- php接收一维数组中文乱码解决
- 如何获取shell脚本中某条语句的执行时间
- PMP-【第2章 项目运行环境与项目经理】2021-1-4(49页-60页)
- python引用文件 mode写在后面还是前面,python3 文件操作常用mode参数用法详解