SQL> declare 2 l_src_data varchar2(20); 3 l_type pls_integer := DBMS_CRYPTO.ENCRYPT_AES128 4 + DBMS_CRYPTO.CHAIN_CBC 5 + DBMS_CRYPTO.PAD_PKCS5; 6 l_key varchar2(20) := '0123456789123456'; 7 l_encval raw(200); 8 9 CURSOR secret_cursor IS 10 select phonenumber from customer; 11 begin 12 OPEN secret_cursor; 13 LOOP 14 FETCH secret_cursor INTO l_src_data; 15 EXIT WHEN secret_cursor%NOTFOUND; 16 17 l_encval := dbms_crypto.encrypt( 18 src => utl_i18n.string_to_raw(l_src_data, 'AL32UTF8'), 19 typ => l_type, 20 key => utl_i18n.string_to_raw(l_key, 'AL32UTF8') 21 ); 22 23 DBMS_OUTPUT.PUT_LINE(l_encval); 24 END LOOP; 25 26 CLOSE secret_cursor; 27 end; 28 29 declare 30 _src_data raw(100) := hextoraw('190248129038903853275ijdkvjkad'); 31 l_type pls_integer := DBMS_CRYPTO.ENCRYPT_AES128 32 + DBMS_CRYPTO.CHAIN_CBC 33 + DBMS_CRYPTO.PAD_PKCS5; 34 l_key varchar2(20) := '0123456789123456'; 35 l_decval raw(200); 36 begin 37 l_decval := dbms_crypto.decrypt( 38 src => _src_data, 39 typ => l_type, 40 key => utl_i18n.string_to_raw(l_key, 'AL32UTF8') 41 ); 42 end; 43 / declare * 第 29 行出现错误: ORA-06550: 第 29 行, 第 1 列: PLS-00103: 出现符号 "DECLARE"
时间: 2024-01-13 11:03:23 浏览: 121
Oracle UTL_FILE的使用
这个错误是因为在第一个 `DECLARE` 语句结束之后没有加上分号 `;`,导致第二个 `DECLARE` 语句被解释成了第一个语句的一部分,从而导致语法错误。
为了解决这个问题,只需要在第一个 `DECLARE` 语句的末尾加上分号 `;`,即可让程序正确执行。修改后的代码如下:
```
declare
l_src_data varchar2(20);
l_type pls_integer := DBMS_CRYPTO.ENCRYPT_AES128
+ DBMS_CRYPTO.CHAIN_CBC
+ DBMS_CRYPTO.PAD_PKCS5;
l_key varchar2(20) := '0123456789123456';
l_encval raw(200);
CURSOR secret_cursor IS
select phonenumber from customer;
begin
OPEN secret_cursor;
LOOP
FETCH secret_cursor INTO l_src_data;
EXIT WHEN secret_cursor%NOTFOUND;
l_encval := dbms_crypto.encrypt(
src => utl_i18n.string_to_raw(l_src_data, 'AL32UTF8'),
typ => l_type,
key => utl_i18n.string_to_raw(l_key, 'AL32UTF8')
);
DBMS_OUTPUT.PUT_LINE(l_encval);
END LOOP;
CLOSE secret_cursor;
end;
declare
_src_data raw(100) := hextoraw('190248129038903853275ijdkvjkad');
l_type pls_integer := DBMS_CRYPTO.ENCRYPT_AES128
+ DBMS_CRYPTO.CHAIN_CBC
+ DBMS_CRYPTO.PAD_PKCS5;
l_key varchar2(20) := '0123456789123456';
l_decval raw(200);
begin
l_decval := dbms_crypto.decrypt(
src => _src_data,
typ => l_type,
key => utl_i18n.string_to_raw(l_key, 'AL32UTF8')
);
end;
```
阅读全文