CREATE DEFINER=`abc`@`%` FUNCTION `abc_test_db`.`S_ENCODER`(p_input_string varchar(40))
RETURNS varchar(40)
READS SQL DATA BEGIN
DECLARE l_encrypted_value varchar(40);
DECLARE v_input_string varchar(40);
DECLARE v_key_string varchar(30);
DECLARE flag varchar(1); SET v_key_string = 'ssss1234';
set flag = '1';
IF flag = '1' THEN
RETURN DES_ENCRYPT(p_input_string, v_key_string);
ELSE
SET l_encrypted_value = p_input_string;
END IF; RETURN l_encrypted_value; END$$头一次写mysql的函数。
为什么执行结果是null啊,还请大家多帮忙!
RETURNS varchar(40)
READS SQL DATA BEGIN
DECLARE l_encrypted_value varchar(40);
DECLARE v_input_string varchar(40);
DECLARE v_key_string varchar(30);
DECLARE flag varchar(1); SET v_key_string = 'ssss1234';
set flag = '1';
IF flag = '1' THEN
RETURN DES_ENCRYPT(p_input_string, v_key_string);
ELSE
SET l_encrypted_value = p_input_string;
END IF; RETURN l_encrypted_value; END$$头一次写mysql的函数。
为什么执行结果是null啊,还请大家多帮忙!
解决方案 »
- 求一个定时删除任务
- com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException
- 1 row in set, 1 warning 是什么意思 ?
- 求sql语句,达人入:
- 公司员工的产量排名问题
- 装好mysql后可以建表却不可以建库!!!why???(急)
- MySQL如何利用API备份数据库?
- mysql 为什么mvcc一定要在隔离级为repeatable read下才生效?
- MYSQL触发器的问题
- 求助sql的搜索语句
- ?急!!关于mysql数据整合的一个问题,高手看看 谢谢
- mysq连接参数autoReconnectForPools到底有什么用
READS SQL DATA
BEGIN
DECLARE l_encrypted_value VARCHAR(40);
DECLARE v_input_string VARCHAR(40);
DECLARE v_key_string VARCHAR(30);
DECLARE flag VARCHAR(1);
DECLARE dd VARCHAR(40);
SET v_key_string = 'ssss1234';
SET flag = '1';
IF flag = '1' THEN
INSERT INTO qt1(d) VALUES(1);
SET dd=DES_ENCRYPT(p_input_string, v_key_string);
ELSE
SET dd=p_input_string;
END IF;
RETURN dd;
END$$DELIMITER ;
但select DES_ENCRYPT(p_input_string, v_key_string);确可以得到结果,不知道为什么?
注意,这个函数只有当MySQL在SSL 的支持下配置完毕时才会运作。请参见5.8.7节,“使用安全连接”.
mysql> select DES_ENCRYPT('credit_card_number');
+-----------------------------------+
| DES_ENCRYPT('credit_card_number') |
+-----------------------------------+
| €:O °$?蠲2D谒辱7G滗宦 |
+-----------------------------------+
1 row in set (0.38 sec)mysql>
+------------------------------------------------------+
| AES_DECRYPT(AES_ENCRYPT('1234567890','pswd'),'pswd') |
+------------------------------------------------------+
| 1234567890 |
+------------------------------------------------------+
1 row in set (0.00 sec)mysql>mysql> select DES_DECRYPT(DES_ENCRYPT('1234567890') ) ;
+-----------------------------------------+
| DES_DECRYPT(DES_ENCRYPT('1234567890') ) |
+-----------------------------------------+
| 1234567890 |
+-----------------------------------------+
1 row in set (0.00 sec)mysql>
这种方式试过了,没有问题。最初的问题解决了,只要把返回值改为blob就可以了,但新的问题来了。汉字时加解密不行啊,有乱码。
检查字符集设置。 不妨先 set names 'gbk'; 试一下。
MySQL 中文显示乱码