Select decrypt(PRODUCT_NUMBER,'123456789') as PRODUCT_NUMBER FROM Test
PRODUCT_NUMBER
是测试表中的一列,包含加密数据Decrypt()
是一个已创建且运行正常的函数。
当我在 Oracle SQL Developer 上运行此Sql时,它会提供正确的结果,但是当我在 JSP 上运行时,它会在函数上给出错误。
在 JSP 中,我通过以下方式调用:
String sql = "Select decrypt(PRODUCT_NUMBER,'123456789') as PRODUCT_NUMBER FROM Test";
rs = conn.executeQuery(sql);
我认为它需要PRODUCT_NUMBER as String ('PRODUCT_NUMBER')
而不是列名,因此它会出错。
java.sql.SQLException: ORA-01465: invalid hex number
这是解密函数
create or replace FUNCTION decrypt(p_raw IN RAW, p_key IN VARCHAR2) RETURN VARCHAR2 IS
v_retval RAW(255);
p_key2 RAW(255);
BEGIN
p_key2 := utl_raw.cast_to_raw(p_key);
dbms_obfuscation_toolkit.DES3Decrypt
(
input => p_raw,
key => p_key2,
which => 1,
decrypted_data => v_retval
);
RETURN RTRIM(utl_raw.cast_to_varchar2(v_retval), CHR(0));
END decrypt;
答案 0 :(得分:0)
解决!!
查询和功能都很完美。
实际上,我的Co Developer已经将Connection指向了某些列中包含-1的数据库的另一个副本实例,这就是它给出错误的原因。
我还原了,查询就像一个魅力。
感谢您的时间每个人:)