使用变量_存储过程和函数及变量的使用
存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句。存储过程和函数可以避免开发人员重复的编写相同的SQL语句。而且,存储过程和函数是在mysql服务器中存储和执行的,可以减少客户端和服务器端的数据传输。
一.创建存储过程和函数
1. 创建存储过程
mysql中创建存储过程的基本形式:
create procedure sp_name([proc_parameter[,…]]) [characteristic…] routine_body;
sp_name:参数是存储过程的名称;
proc_parameter:表示存储过程的参数列表;
characteristic:参数指定存储过程的特性;
routine_body:参数是SQL代码的内容,可以用begin…end来标志SQL代码的开始和结束;
proc_parameter中每个参数由3部分组成。这3部分分别是输入输出类型、参数名称和参数类型。
[in|out|inout] param_name type
in:表示输入参数
out:表示输出参数
inout:表示既可以是输入也可以是输出
param_name:参数是存储过程的参数名称
type:参数指定存储过程的参数类型,该类型可以是mysql数据库的任意数据类型。
characteristic参数有多个取值。取值说明:
language SQL:说明routine_body部分是由SQL语言的语句组成,这也是数据库系统默认的语言。
[not] deterministic:指明存储过程的执行结果是否是确定的。
deterministic:表示结果是确定的,每次执行存储过程时,相同的输入会得到相同的输出。
not deterministic:表示结果是非确定的,相同的输入可能得到不同的输出。默认情况下,结果也是非确定的。
{contains sql|no sql|reads sql data|modifies sql data}:指明子程序使用SQL语句的限制。
contains SQL:表示子程序包含SQL语句,但不包含读或者写数据的语句;
no SQL:表示子程序中不包含SQL语句;
reads SQL data:表示子程序中包含读数据的语句;
modifies sql data:表示子程序中包含写数据的语句。默认情况下,系统会指定为contains SQL。
SQL security{definer|invoker}:指明谁有权限来执行。
definer:表示只有定义者自己才能执行;
invoker:表示调用者可以执行。默认情况下,系统指定的权限是definer。
comment ‘string’:注释信息。
注:创建存储过程时,系统默认指定contains SQL,表示存储过程中使用SQL语句,最好设置为no SQL。而且,存储过程中最好在comment部分对存储过程进行简单的注释,以便以后再阅读存储过程的代码是更加方便。
示例:下面创建一个名为num_from_employee的存储过程。
delimiter &&
create procedure num_from_employee(in emp_id int,out count_num int)
reads sql data
begin
select count(*) into count_num
from employee
where d_id=emp_id;
end &&
注:代码执行完毕,没报错就表示存储过程创建成功;
说明:mysq中默认的语句结束符为分号(;)。存储过程中的SQL语句需要分号来结束。为避免冲突,首先用”delimiter &&”将mysql的技术符设置为&&。最后再用”delimiter;”来将结束符恢复成分号。
创建存储函数
mysql中创建存储函数的语法:
create function sp_name([func_parameter[,…]])
returns type
[characteristic…] routine_body
sp_name:参数是函数的名称;
func_parameter:表示存储函数的参数列表;
returns type:指返回值类型;
characteristic:参数指定存储函数的特性,该参数的取值与存储过程中取值是一样的。
routine_body:参数是SQL代码的内容,可以用begin…end来标志SQL代码的开始和结束。
func_parameter:可以由多个参数组成,其中每个参数由参数名称和参数类型组成,形式:param_name type
其中,param_name 是存储函数的参数名称;
type:参数是指定存储函数的参数类型;
示例:下面创建一个名为name_from_employee的存储函数
create function name_from_employee(emp_id int)
returns varchar(20)
begin
return (select name from employee where num=emp_id);
end
存储函数的名称:name_from_employee;
函数的参数:emp_id;
返回值是varchar类型;
2. 变量的使用
在存储过程和函数中,可以定义和使用变量。可以使用declare关键字定义变量,然后赋值。变量的作用范围是begin…and程序段中。
(1) 定义变量
使用declare关键字定义变量。语法:
declare var_name[,…] type [default value]
declare:声明变量;
var_name:参数是变量的名称(可以同时定义多个变量);
type:指定变量的类型;
default value:子句将变量默认值设置为value,未使用default value时,默认值为null;
示例:declare my_sql int default 10;
(2) 为变量赋值
mysql中set关键字为变量赋值。语法:
set var_name = expr[,var_name=expr]…
set:为变量赋值;
var_name:参数是变量的名称;
expr:参数是赋值表达式;
注:一个set语句可以同时为多个变量赋值,各个变量的赋值语句之间用逗号(,)隔开。
示例:为变量my_sql赋值为30;
set my_sql=30;
mysql中还可以用select…into…语句为变量赋值。语法:
select col_name[,…] into var_name[,…] from table_name where condition
col_name:参数表示查询的字段名称;
var_char:参数是变量的名称;
table_name:参数指表的名称;
condition:参数指查询条件;
示例:下面从employee表中查询id为2的记录。将该记录的d_id值赋给my_sql变量。
select d_id into my_sql from employee where id=2;
使用变量_存储过程和函数及变量的使用相关推荐
- MySql基础篇---004 其它数据库对象篇:视图,存储过程与函数,变量、流程控制与游标 ,触发器
第14章_视图 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 常见的数据库对象 对象 描述 表(TABLE) 表是存储数据的逻辑单元,以行和列的形 ...
- MySQL06:变量、存储过程和函数、流程控制结构
6.变量.存储过程和函数.流程控制结构 变量 分类 系统变量: 全局变量 会话变量 自定义变量: 用户变量 局部变量 系统变量 说明:变量由系统定义,不是用户定义,属于服务器层面 注意:全局变量需要添 ...
- 第15章_存储过程与函数(创建存储过程、调用存储过程、存储函数的使用、存储过程和函数的查看、修改、删除)
第15章_存储过程与函数 第15章_存储过程与函数 1. 存储过程概述 1.1 理解 1.2 分类 2. 创建存储过程 2.1 语法分析 2.2 代码举例 3. 调用存储过程 3.1 调用格式 3.2 ...
- 变量、存储过程与函数
变量 分类 系统变量 全局变量 会话变量 自定义变量 用户变量 局部变量 系统变量 变量由系统提供,不是用户定义,属于服务器层面 查看所有的系统变量 SHOW GLOBAL | [SESSION] V ...
- Mysql数据库基础知识(五)之:视图、变量、存储过程、函数、流程控制结构
第一部分:Mysql数据库基础知识(一)之 基础查询----分组查询 第二部分:Mysql数据库基础知识(二)之 连接查询----子查询-----分页查询------union联合查询 第三部分:My ...
- mysql基础——变量、存储过程和函数
目录 一.变量 1.1 基本介绍 1.2 系统变量 1.3 自定义变量 二.存储过程 2.1 基本介绍 2.2 存储过程的创建 2.3 存储过程的删除 2.4 存储过程的查看 2.5 ...
- 尚硅谷李玉婷老师MySQL课程--视图、变量、存储过程和函数、流程控制结构
一.视图 1.视图的创建 CREATE VIEW 视图名 AS 查询语句; 例1: create view myv as select avg(salary),job_id from employee ...
- MySQL—变量、存储过程和函数(十一)
一.变量 1 变量的种类 1.1 系统变量 系统变量一共分为两种: 1)全局变量 ...
- python函数对变量的作用_python函数对变量的作用及遵循的原则
1.全局变量和局部变量 全局变量:指在函数之外定义的变量,一般没有缩进,在程序执行的全过程有效 局部变量:指在函数内部使用的变量,仅在函数内部有效,当函数退出时变量将不存在 例如: 1 n=1 #n是 ...
最新文章
- Linux 基础学习
- 从MyEclipse到IntelliJ IDEA ——让你脱键盘,全键盘操作
- hdu1025 Constructing Roads In JGShining#39;s Kingdom(二分+dp)
- 将两个数组河滨_两名3岁男孩在河滨公园玩耍迷了路 幸亏被好心人“捡”到
- Java中的10颗语法糖
- java——自己实现基础的线程池及带有任务数过多拒绝策略、线程池销毁、自动扩充线程数量及闲时自动回收线程等操作的改进版线程池
- 宁波理工大学计算机程序设计培训,拼搏在程序设计前列——专访ACM大赛冠军浙江大学宁波理工学院FBH团队...
- micro 架构组件介绍
- oracle 虚拟机安装mac os,oracle vm virtualbox虚拟机安装mac os x详细图解
- 进制转换—任意进制乘法表
- npm WARN read-shrinkwrap This version of npm is compatible with lockfileVersion@1, but package-lock.
- 西游记中四大菩萨的坐骑
- 令克软件再推OpenAPI与MAS系统服务,强大引擎赋能券商多元化发展
- nn.Flatten()函数详解及示例
- 【苹果群发】苹果推iMessage接口筛选应用程序利用密钥箱生成CSR文书
- JS:打字游戏_键盘事件监听
- 数据分析七种降维方法
- T-LESS: An RGB-D Dataset for 6D Pose Estimation of Texture-less Objects
- 【C语言中如何表示无穷大】
- 敷完面膜后要擦水乳吗_敷完面膜还要擦水乳吗?
热门文章
- mysql 笔试题_MySQL笔试题详解(一)(中等难度)
- 3个月转行数据分析师,你需要掌握这些内容
- 招募 | 贪心科技招募CV、语音分析、联邦学习课程讲师(在线+兼职)
- 面向睡眠阶段分类的自适应时空图卷积神经网络
- OAG – WhoIsWho 同名消歧竞赛发布 | 10万元奖金双赛道
- 下拉菜单实现树状结构_二叉索引树(树状数组)的原理
- photon四种同步方式_【Linux】多线程同步的四种方式
- SpringMVC的数据响应方式-页面跳转
- Spring的事务控制-基于注解的方式
- eclipse安装lombok后无法启动解决办法