日期:2014-05-16  浏览次数:20949 次

代码提示已编译但有错误
CREATE OR REPLACE FUNCTION "DES_test3"(str in varchar2,mkey in varchar2) return varchar2
  deterministic IS
  l_data  varchar2(255);
  l_data2 varchar2(255);
  l_key varchar2(100);
begin
  l_key := mkey
  l_data := rpad(str, (trunc(length(str) / 8) + 1) * 8, chr(0));
  dbms_obfuscation_toolkit.DESEncrypt(input_string     => l_data,
                                      key_string       => l_key,
                                      encrypted_string => l_data2);
  return l_data2;
end DES_test1;

上面这个方法编译出错,错误如题,之前的方法
CREATE OR REPLACE FUNCTION "DES2"(str in varchar2) return varchar2
  deterministic IS
  l_data  varchar2(255);
  l_data2 varchar2(255);
begin
  l_data := rpad(str, (trunc(length(str) / 8) + 1) * 8, chr(0));
  dbms_obfuscation_toolkit.DESEncrypt(input_string     => l_data,
                                      key_string       => 'MagicKey',
                                      encrypted_string => l_data2);
  return l_data2;
end DES2;

能编译成功并且能使用,我只是改了一部分 怎么编译不了,求解

------解决方案--------------------
1. l_key := mkey后面缺分号。
2. end DES_test1;应该是DES_test3
另外创建的函名为什么要加双引号啊,直接创建多好啊。
------解决方案--------------------
嗯,也可以省去l_key,直接将传入参数给过程调用,des_test1、des_test3也可省略。