db2参数的自变量数据类型、长度或值不正确。参数名:""。 SQLSTATE=42815
对字段进行加密时,如果字段存储不为二进制,则加密可以成功,但是解密是报错。 如果字段类型为二进制则可以解密成功,请问这是什么原因!
例: create table test(test_Id intefer,test_value varchar(50)); DB20000I SQL 命令成功完成。 insert into test values(1,encrypt('a',111222)); DB20000I SQL 命令成功完成。 select test_id,decrypt_char(test_value,111222) from test; SQL0171N 例程 "SYSIBM.DECRYPT" 的位置 "1" 中参数的自变量数据类型、长度或值不正确。参数名:""。 SQLSTATE=42815
将字段存储改为二进制: delete from test; alter table test alter column test_value set data type varchar(50) for bit data; reorg table test; insert into test values(1,encrypt('a',111222)); 结果: 1 a
因为ENCRYPT函数返回的数据类型是 VARCHAR FOR BIT DATA,所以你不应该在表中将数据类型定义为VARCHAR. DECRYPT函数接受的参数也是 BIT DATA 的,所以你表定义中是VARCHAR时,说参数类型不匹配。
--因此 --加密字段必须用二进制存储
|