Mysql存储过程查询结果赋值到变量的方法

把查询结果赋值到变量,大部分情况下使用游标来完成,但是如果明确知道查询结果只有一行(例如统计记录的数量,某个字段求和等),其实可以使用set或into的方式来实现赋值。示例代码:

drop table if exists test_tbl;
create table test_tbl (name varchar(20), status int(2));
insert into test_tbl values(‘abc‘, 1),(‘edf‘, 2),(‘xyz‘, 3);

drop procedure IF EXISTS pro_test_3;
delimiter //
create procedure pro_test_3()
begin
--  方式 1
    DECLARE cnt INT DEFAULT 0;
    select count(*) into cnt from test_tbl;
    select cnt;

--  方式 2
    set @cnt = (select count(*) from test_tbl);
    select @cnt;

--  方式 3
    select count(*) into @cnt1 from test_tbl;
    select @cnt1;

--  多个列的情况下似乎只能用 into 方式

    select max(status), avg(status) into @max, @avg from test_tbl;

    select @max, @avg;

end

//

delimiter ;

call pro_test_3();
时间: 2024-10-17 04:01:57

Mysql存储过程查询结果赋值到变量的方法的相关文章

MySQL中查询、删除重复记录的方法大全

前言 本文主要给大家介绍了关于MySQL中查询.删除重复记录的方法,分享出来供大家参考学习,下面来看看详细的介绍: 查找所有重复标题的记录: ? 1 select title,count(*) as count from user_table group by title having count>1; ? 1 SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > 1) ORDER

mysql存储过程(查询数据库 游标循环 if判断 插入别的数据库)

BEGIN declare f_age int;DECLARE incode1 VARCHAR(100);DECLARE incode2 VARCHAR(100);DECLARE incode3 VARCHAR(100);DECLARE incode4 VARCHAR(100);DECLARE incode5 VARCHAR(100);DECLARE incode6 VARCHAR(100); declare a1 int; declare a2 int; declare a3 int; dec

Mysql存储过程查询数据插入别的表里。

DELIMITER// CREATE PROCEDURE setRoomManger2() BEGIN DECLARE roomids VARCHAR(32); DECLARE done INT DEFAULT 0; DECLARE cur CURSOR FOR SELECT roomid FROM nst_t_room; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; OPEN cur; FETCH NEXT FROM c

mysql命令行以及mysql workbence查询结果中文乱码的解决方法

最近正在学习mysql,安装环境是windows server 2003 32位操作系统+mysql 5.1.47同时也安装了mysql命令行以及mysql workbench这里是test数据库create  table fortest(empno int auto_increment,empname nvarchar(20) not null,constraint pk_fortest primary key(empno))default charset=utf8;然后插入了一条数据set

mysql 存储过程:提供查询语句并返回查询执行影响的行数

mysql 存储过程:提供查询语句并返回查询执行影响的行数DELIMITER $$ DROP PROCEDURE IF EXISTS `p_get_select_row_number`$$ CREATE PROCEDURE `test_cases`.`p_get_select_row_number`(IN p_select_sql VARCHAR(200), OUT p_count INT(8) ) BEGIN -- 声明 DECLARE cnt INT DEFAULT 0; DECLARE s

mysql -- 存储过程中 declare 和 set 定义变量的区别

mysql存储过程中,定义变量有两种方式:1.使用set或select直接赋值,变量名以 @ 开头.例如:set @var=1;可以在一个会话的任何地方声明,作用域是整个会话,称为会话变量. 2.以 DECLARE 关键字声明的变量,只能在存储过程中使用,称为存储过程变量,例如:DECLARE var1  INT DEFAULT 0;  主要用在存储过程中,或者是给存储传参数中. 两者的区别是:在调用存储过程时,以DECLARE声明的变量都会被初始化为 NULL.而会话变量(即@开头的变量)则不

mysql存储过程变量的拼接

存储过程变量的拼接   有时候我们需要模糊查询,但是同时我们又要 在模糊查询的时候使用变量,我们又想在变量的后面拼接一个%去匹配模糊查询   那么就会用到 concat函数   示例如下:  www.2cto.com      SELECT count(id) FROM config WHERE name like  concat(studentName,'%');    其中studentName是变量,   如果复制studentName的值=‘李’   那么效果相当于  SELECT co

mysql存储过程之循环遍历查询结果集

-- 创建存储过程之前需判断该存储过程是否已存在,若存在则删除DROP PROCEDURE IF EXISTS init_reportUrl; -- 创建存储过程CREATE PROCEDURE init_reportUrl()BEGIN -- 定义变量 DECLARE s int DEFAULT 0; DECLARE report_id varchar(255); DECLARE report_url varchar(256); -- 定义游标,并将sql结果集赋值到游标中 DECLARE r

MySQL存储过程详解 mysql 存储过程

MySQL存储过程详解  mysql 存储过程 (2010-12-13 10:59:38) 转载▼ 标签: it 分类: mysql mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它. 一个存储过程是一个可编程的函数,它在数据库中创建并保