我写了这个存储过程来加密一个值,但是它总是返回Null
我在这里做错了什么?
CREATE DEFINER=`root`@`localhost` FUNCTION `scramble`(`enc_mode` VARCHAR(7), `enc_id` INT, `enc_str` VARCHAR(2400))
RETURNS varchar(2400)
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
declare enc_mode varchar(7);
declare enc_id int(10);
declare enc_str varchar(2400);
declare enc_output varchar(2400);
if enc_mode = 'encrypt' then
set enc_output = lower(hex(aes_encrypt('enc_id','x')));
elseif enc_mode = 'decrypt' then
set enc_output = aes_decrypt(unhex(enc_str),'x');
else
set enc_output = 'Arrg!';
end if;
return enc_output;
END
最佳答案
不要重新声明
declare enc_mode varchar(7);
declare enc_id int(10);
declare enc_str varchar(2400);
在逻辑中直接使用enc_mode,enc_id和enc_str
关于mysql - 带加密的存储过程始终返回null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19246868/