当前位置:首页 » 存储配置 » mysql存储过程查询赋值

mysql存储过程查询赋值

发布时间: 2022-07-11 21:54:52

A. 关于mysql存储过程select into无法赋值诡异的事情,请大神求教,这是怎么回事

方法是没有问题,可以在insert into 前面加一条select userName ; 用于检查是否正常获取到值。

B. Mysql将存储过程执行后的值赋值给变量

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 procere IF EXISTS pro_test_3;
delimiter //
create procere pro_test_3()
begin
DECLARE cnt INT DEFAULT 0;
select count(*) into cnt from test_tbl;
select cnt;
-- 多个列的情况下似乎只能用 into 方式
select max(status), avg(status) into @max, @avg from test_tbl;
select @max, @avg;
end
delimiter ;
call pro_test_3();

C. MYSQL的存储过程count(*)赋值给变量的问题

count(*)可以快速遍历整个数据表,统计出符合条件的总条数X
正确用法是:
select count(*) as a from table where ...
执行之后,该结果中就有一个名为a的变量,其值为X

D. mysql 存储过程怎么赋值

DELIMITER$$
USE`test`$$
DROPPROCEDUREIFEXISTS`p_getAllTablesCount`$$
CREATEDEFINER=`root`@`localhost`PROCEDURE`p_getAllTablesCount`()
BEGIN
DECLAREtableNameVARCHAR(100);
DECLAREtablesnVARCHAR(100);
DECLAREtableCountINT;
DECLAREstopFlagINT;
DECLAREsqlStrVARCHAR(1000);
--注意:请修改数据库名称
DECLAREcursor_nameCURSORFORSELECTTABLE_NAMEFROMinformation_schema.tablesWHEREtable_schema='test';
'02000'SETstopFlag=1;
CREATETABLEIFNOTEXISTStemp_table(table_nameVARCHAR(100),table_countVARCHAR(100));
OPENcursor_name;
REPEAT
FETCHcursor_nameINTOtableName;
SETsqlStr=CONCAT('SELECTCOUNT(1)into@tableCountFROM',tableName);
SELECTsqlStrINTO@sqlStr;
--select@sqlStr;
SELECT@tableCountINTOtableCount;
BEGIN
@sqlStr;
EXECUTEstepInsertIntoTable;
END;
SETsqlStr=CONCAT('insertintotemp_tablevalues(''',CONCAT(tableName),''',''',CONCAT(tableCount),''');');
SELECTsqlStrINTO@sqlStr;
BEGIN
@sqlStr;
EXECUTEstepInsertIntoTable;
END;
UNTILstopFlagENDREPEAT;
CLOSEcursor_name;
SELECTtable_name,table_countFROMtemp_tableORDERBYtable_countDESC;
--PREPAREstepFROM@sql1;
--EXECUTEstep;
DROPTABLEtemp_table;
END$$
DELIMITER;

E. mysql 存储过程 局部变量赋值给where 查询无结果 数据库有值

字段加上表名:

select `fname`,`lname` from `employee` where `employee`.`depart` = tmp;

热点内容
vb6编译教程 发布:2025-05-12 00:09:37 浏览:916
安卓车机怎么发送视频 发布:2025-05-12 00:09:33 浏览:806
sql更新时间 发布:2025-05-12 00:02:27 浏览:650
安卓os系统怎么刷 发布:2025-05-11 23:56:05 浏览:101
android非ui线程 发布:2025-05-11 23:51:53 浏览:568
压缩机太老 发布:2025-05-11 23:51:45 浏览:954
攻沙时间设置脚本 发布:2025-05-11 23:44:44 浏览:820
java编译web项目吗 发布:2025-05-11 23:41:01 浏览:371
php文章管理系统 发布:2025-05-11 23:36:18 浏览:535
u3d加密 发布:2025-05-11 23:35:09 浏览:998