0

我写了这个存储过程来加密一个值,但它总是返回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
4

1 回答 1

1

不要重新声明

declare enc_mode varchar(7);
declare enc_id int(10);
declare enc_str varchar(2400);

直接在逻辑中使用 enc_mode、enc_id 和 enc_str

于 2013-10-08T11:55:31.030 回答