过程中MySQL中的空值

问题描述 投票:0回答:1

程序

delimiter $$ 
CREATE procedure sp_count_accounts(in inCX varchar(45), out countFD int, out countSA int) 
begin
    declare countFD, countSA int default 0;
    select count(*) into countFD from account where ACC_TYPE='FD' and CUS_NAME = inCX;
    select count(*) into countSA from account where ACC_TYPE='SA' and CUS_NAME = inCX;
end $$ 
delimiter ;

CALL sp_count_accounts('Alex', @SA, @FD); 
SELECT @SA as Savings, @FD as 'Fixed Deposit';

测试结果

Savings Fixed Deposit
1       2

但是,我得到的是 null 而不是值。

我尝试查看我的笔记,但我不确定发生了什么

mysql procedure
1个回答
0
投票

当您声明与输出参数同名的变量时,您将只填充该变量,但输出参数在您的情况下保持 NULL。

所以删除声明,你就得到了你想要的结果

CREATE tABLE account (ACC_TYPE vaRCHAR(2), CUS_NAME VARCHAR(20))
INSERT INTO account VALUES ('FD','Alex'), ('SA','Alex'), ('SA','Alex')
CREATE procedure sp_count_accounts(in inCX varchar(45), out countFD int, out countSA int) 
begin
    #declare countFD, countSA int default 0;  <-- removed
    select count(*) into countFD from account where ACC_TYPE='FD' and CUS_NAME = inCX;
    select count(*) into countSA from account where ACC_TYPE='SA' and CUS_NAME = inCX;
end
CALL sp_count_accounts('Alex', @SA, @FD); 

SELECT @SA as Savings, @FD as 'Fixed Deposit';
节省 定期存款
1 2

小提琴

© www.soinside.com 2019 - 2024. All rights reserved.