MySQL 声明变量及存储过程分析

声明变量

设置全局变量

set @a='一个新变量';

在函数和储存过程中使用的变量declear

declear a int unsigned default 1;

这种变量需要设置变量类型 而且只存在在 begin..end 这段之内

select .. into..  直接将表内内容赋值到指定变量当中

select name,bid into @a,@b from bank limit 1;

要注意一点就是变量名不能和字段名一致

存储过程

存储过程将一段通用的操作封装在一起 这样再不同平台都可以公用了

储存过程没有返回值,而且不能sql语句调用,只能是call调用,而且不返回结果集,执行就执行了

要注意的是在储存过程中进行sql语句要用到 ; 这个系统默认结束符 要重新设置成别的,不然在写过程的一半系统就错认程序为终止继而报错

改变结束命令符为$

delimiter$+回车 或者简写成 \d $+回车

显示所有存储过程

show procedure status;

删除指定存储过程

drop procedure 过程名;

存储过程演示'

\d $ 1 create procedure yanshi(in arg tinyint)
begin
declare age tinyint default 0;
set age=arg;
if age<20 then
select '小于20的数';
elseif age>20 then
select '大于20的数';
end if;
end
$
//调用过程
set @num=12$
call yanshi(@num)$
call yanshi(21)$

判断输入到存储过程中的数字属于哪个阶段

在存储过程中传参分 in ,out , inout 三种

in 可以输出从外部传入的变量 不会改变传进变量本来的值

create procedure a(in id int)
begin
  select id;
  set id = 100;
end
$
set @id=1$
call a(@id)$ //输出1 即从外部传进来的@id 的值
select $id$ //输出1 说明存储过程中没有改变传进的值

out 不能输出从外部传进的值  会改变传进变量本来的值

create procedure b(out id int)
begin
  select id;
  set id = 100;
end
$
set @id=1$
call b(@id)$  //输入null
select @id$ //输出100

inout 就是又能输出传入变量又能改变传入变量咯

下面是检验你电脑硬件性能的时候了

还记得当年的bank表吗? 就是他保留住 然后执行以下命令:

create procedure addbank()
begin
  declare i int default 0;
  set i = 5000000;
  while i > 0 do
  insert into bank (name) values (i);
  set i = i - 1;
  end while;
end
$
call addbank()$

祝你好运

总结

以上就是本文关于MySQL 声明变量及存储过程分析的全部内容,希望对大家有所帮助。感兴趣的朋友可以参阅:几个比较重要的MySQL变量  MySQL prepare原理详解  ORACLE SQL语句优化技术要点解析等,有什么问题可以随时留言,小编会及时回复大家的。感谢朋友们对我们网站的支持!

(0)

相关推荐

  • mysql 存储过程中变量的定义与赋值操作

    一.变量的定义 mysql中变量定义用declare来定义一局部变量,该变量的使用范围只能在begin...end 块中使用,变量必须定义在复合语句的开头,并且是在其它语句之前,也可以同时申明多个变量,如果需要,可以使用default赋默认值. 定义一个变量语法如下: declare var_name[,...] type[default value]看一个变量定义实例 declare last date;二.mysql存储过程变量赋值 变量的赋值可直接赋值与查询赋值来操作,直接赋值可以用set

  • 浅谈MySQL存储过程中declare和set定义变量的区别

    在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅在类中生效.即只在存储过程中的begin和end之间生效. 2.@set定义的变量,叫做会话变量,也叫用户定义变量,在整个会话中都起作用(比如某个应用的一个连接过程中),即这个变量可以在被调用的存储过程或者代码之间共享数据.如何理解呢?可以看下面这个简单例子,很好理解. (1)先执行下面脚本,创建一

  • MySQL 声明变量及存储过程分析

    声明变量 设置全局变量 set @a='一个新变量'; 在函数和储存过程中使用的变量declear declear a int unsigned default 1; 这种变量需要设置变量类型 而且只存在在 begin..end 这段之内 select .. into..  直接将表内内容赋值到指定变量当中 select name,bid into @a,@b from bank limit 1; 要注意一点就是变量名不能和字段名一致 存储过程 存储过程将一段通用的操作封装在一起 这样再不同平台

  • 深入理解C++中变量的存储类别和属性

    C++变量的存储类别(动态存储.静态存储.自动变量.寄存器变量.外部变量) 动态存储方式与静态存储方式 我们已经了解了变量的作用域.作用域是从空间的角度来分析的,分为全局变量和局部变量. 变量还有另一种属性--存储期(storage duration,也称生命期).存储期是指变量在内存中的存在期间.这是从变量值存在的时间角度来分析的.存储期可以分为静态存储期(static storage duration)和动态存储期(dynamic storage duration).这是由变量的静态存储方式

  • 细谈Mysql的存储过程和存储函数

    1 存储过程 1.1 什么是存储过程 存储过程是一组为了完成某项特定功能的sql语句集,其实质上就是一段存储在数据库中的代码,他可以由声明式的sql语句(如CREATE,UPDATE,SELECT等语句)和过程式sql语句(如IF...THEN...ELSE控制结构语句)组成.存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用. 1.2 存储过程的优缺点 优点: 1.可增强sql语言的功能和灵活性 存储过程可以用流程控制语言编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算.

  • MYSQL环境变量设置方法

    mysql环境变量设置(windows环境) 1.对于命令控来说,在cmd命令下行下操作很方便,但有时需要直接在命令行床空执行mysql这样的命令,会出现"mysql不是内部或外部命令"这样的错误提示,原因是mysql其实是一个exe文件,存放于myql安装路径/bin下,因此需要将mysql的安装路径配置到path环境变量中,如此以后就不用每次都cd到mysql路径下了: 2.设置完成后我们再试试看-cmd-->mysql已经连接上mysql了,接下来我们可以使用dml.sql

  • 浅谈javascript:两种注释,声明变量,定义函数

    JavaScript:单行注释用//呵呵呵呵:多行注释用/*hdhdhdh*/ javascript中区别大小写,定义变量使用关键字var,语法如下:var 变量名,其中变量从编程角度讲,变量是用于存储某种/某些数值的存储器. javascript函数调用: 以上就是小编为大家带来的浅谈javascript:两种注释,声明变量,定义函数全部内容了,希望大家多多支持我们~

  • php闭包中使用use声明变量的作用域实例分析

    本文实例讲述了php闭包中使用use声明变量的作用域.分享给大家供大家参考,具体如下: <?php function getClosure($i) { $i = $i.'-'.date('H:i:s'); return function ($param) use ($i) { echo "--- param: $param ---\n"; echo "--- i: $i ---\n"; }; } $c = getClosure(123); $i = 456;

  • mysql声明游标的方法

    mysql声明游标的方法: 1.声明变量和游标 declare result varchar(3000); declare flag1 varchar(100); DECLARE done INT DEFAULT FALSE; declare cur1 CURSOR FOR SELECT flag from bmlx; 2.变量赋值 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; set result = ''; 3.打开游标和循环

  • MySQL 自定义变量的概念及特点

    MySQL 的自定义 就是存储值的临时容器,只要与服务端的连接是活跃的,容器中的值可以保存和使用.可以通过简单的 SET 或 SELECT语句 设置自定义变量,如下所示: SET @one := 1: SET @min_actor := (SELECT MIN(actor_id) FROM sakila.actor); SET @last_week := CURRENT_DATE-INTERNAL 1 WEEK; 定义好变量后,就可以在 SQL 语句中使用这个变量: SELECT * FROM

  • 基于MySQL在磁盘上存储NULL值

    目录 1为何不能直接存个NULL? 2到底怎么存储? 3一行数据的磁盘存储格式 4如何读磁盘的一行数据? 1 为何不能直接存个NULL? NULL值列表,一行数据里可能有的字段值是NULL,比如nickname字段,允许为NULL,存储时,如果没赋值,这字段值就是NULL.假设这个字段的NULL值在磁盘存储时,就是按“NULL”字符串存储的,是不是很浪费存储空间而且还奇怪? 2 到底怎么存储? 不通过字符串,而是通过二进制bit位存储,一行数据里假设有多个字段的值都是NULL,那么这多个字段的N

  • mysql的Buffer Pool存储及原理解析

    目录 一.前言 1.buffer pool是什么 2.buffer pool的工作流程 3.buffer pool缓冲池和查询缓存(query cache) 二.buffer pool的内存数据结构 1.数据页概念 2.那么怎么识别数据在哪个缓存页中 3.buffer pool的初始化与配置 3.1.初始化 3.2.buffer pool的配置 3.3.Buffer Pool Size 设置和生效过程 3.4.Buffer Pool Instances 3.5.SHOW ENGINE INNOD

随机推荐