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 而不是值。
我尝试查看我的笔记,但我不确定发生了什么
当您声明与输出参数同名的变量时,您将只填充该变量,但输出参数在您的情况下保持 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 |