PLSQL编程入门:掌握SQL基本操作与应用

版权申诉
0 下载量 142 浏览量 更新于2024-10-07 收藏 7KB ZIP 举报
资源摘要信息:"PLSQL程序编程基础教程,涵盖了SQL语言的基本操作,旨在帮助初学者快速入门PL/SQL编程" PL/SQL是Oracle数据库中用于编写存储过程、函数、触发器等数据库对象的编程语言。它是SQL语言的扩展,加入了过程化编程的元素,使得复杂数据库操作的执行更加高效和模块化。本资源"pl_sql.zip_fetch_pl/sql_pl_sql_plsql_plsql java"以压缩包形式提供了多个SQL脚本文件,涉及了PL/SQL编程的多个重要方面,包括基本操作、游标操作、循环控制结构等。 在描述中提到的"SQL语言的基本操作"可能包含了以下几个方面: 1. 数据查询语言DQL:用于从数据库中检索数据,基本语法结构是SELECT语句。 2. 数据定义语言DDL:用于定义或修改数据库结构,包括创建、修改、删除表、视图、索引等,基本命令包括CREATE、ALTER和DROP。 3. 数据操纵语言DML:用于对数据库中表的数据进行增加、删除和修改操作,基本命令包括INSERT、UPDATE、DELETE。 4. 数据控制语言DCL:用于控制数据库中数据的权限和安全性,基本命令包括GRANT和REVOKE。 在压缩包文件名称列表中,我们看到了如下文件: - type.sql:可能包含了数据类型的定义和使用示例。 - update_cma.sql:可能是一个更新操作的例子,针对某个名为cma的表。 - elim_inventory.sql:可能是一个删除操作的例子,针对一个库存相关表。 - anony.sql:可能包含匿名块(anonymous block)的示例,这是PL/SQL中执行临时代码块的方式。 - elim2.sql:可能是一个更复杂的删除操作或相关的逻辑处理。 - trigger.sql:包含创建和使用数据库触发器的示例,用于自动执行某些操作。 - update_rows.sql:可能是一个或多个更新行的SQL操作示例。 - update_cma2.sql:另一个针对cma表的更新操作示例。 - for_loop1.sql:包含PL/SQL中的FOR循环结构示例。 - while_loop2.sql:包含PL/SQL中的WHILE循环结构示例。 文件中的脚本可能按照不同的PL/SQL构造进行了分类,例如,for_loop1.sql和while_loop2.sql分别展示了不同的循环控制结构,这些结构允许PL/SQL程序更灵活地执行重复性任务。 由于本资源是面向PL/SQL初学者的,因此它可能还会包含一些编程的基础知识,比如PL/SQL块的结构,包括声明部分、执行部分和异常处理部分;PL/SQL中的变量、常量和记录的使用;游标的使用以及触发器的创建和使用方法等。 在学习这些脚本时,初学者将逐步了解如何在Oracle数据库中编写结构化的SQL语句,并利用PL/SQL的强大功能来处理更复杂的业务逻辑。此外,了解如何使用PL/SQL与Java语言交互也是非常有价值的,因为这样可以在Java应用程序中直接利用数据库的功能,提高应用性能和开发效率。这部分内容可能会在"title"中的"plsql__java"有所体现,意味着PL/SQL与Java的交互编程。 总之,该资源为PL/SQL初学者提供了一个全面的入门学习材料,涵盖了从基础的SQL操作到复杂的PL/SQL编程技术,还包括了与Java语言的集成,对于有志于掌握Oracle数据库编程的读者来说,是不可多得的学习资源。

grant execute on dbms_crypto to system; -- 第一个代码块 declare input_string VARCHAR2 (200) := 'Secret Message'; output_string VARCHAR2(2000); encrypted_raw RAW(2000); decrypted_raw RAW(2000); num_key_bytes NUMBER := 256/8; key_bytes_raw RAW(32); encryption_type PLS_INTEGER := DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5; begin DBMS_OUTPUT.PUT_LINE(input_string); key_bytes_raw := DBMS_CRYPTO.RANDOMBYTES(num_key_bytes); encrypted_raw := DBMS_CRYPTO.ENCRYPT(src => UTL_I18N.STRING_TO_RAW(input_string, 'AL32UTF8'), typ => encryption_type, key => key_bytes_raw); decrypted_raw := DBMS_CRYPTO.DECRYPT(src => encrypted_raw, typ => encryption_type, key => key_bytes_raw); output_string := UTL_I18N.RAW_TO_CHAR(decrypted_raw, 'AL32UTF8'); DBMS_OUTPUT.PUT_LINE(output_string); end; -- 第二个代码块 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(2000); 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 l_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 => l_src_data, typ => l_type, key => utl_i18n.string_to_raw(l_key,'AL32UTF8')); end; -- SQL 查询语句 SELECT Price FROM PRODUCT WHERE ProductID = 5;declare * ERROR at line 18: ORA-06550: line 18, column 1: PLS-00103: Encountered the symbol "DECLARE"报错

2023-05-26 上传

grant execute on dbms_crypto to system; declare input_string VARCHAR2 (200) := 'Secret Message'; output_string VARCHAR2(2000); encrypted_raw RAW(2000); decrypted_raw RAW(2000); num_key_bytes NUMBER := 256/8; key_bytes_raw RAW(32); encryption_type PLS_INTEGER := DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5; begin DBMS_OUTPUT.PUT_LINE(input_string); key_bytes_raw := DBMS_CRYPTO.RANDOMBYTES(num_key_bytes); encrypted_raw := DBMS_CRYPTO.ENCRYPT ( src => UTL_I18N.STRING_TO_RAW(input_string, 'AL32UTF8'), typ => encryption_type, key => key_bytes_raw ); decrypted_raw := DBMS_CRYPTO.DECRYPT ( src => encrypted_raw, typ => encryption_type, key => key_bytes_raw ); output_string := UTL_I18N.RAW_TO_CHAR(decrypted_raw, 'AL32UTF8'); DBMS_OUTPUT.PUT_LINE(output_string); end; 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(2000); CURSOR secret_cursor IS select phonenumber from customer; begin OPEN secret_cursor; LOOP FETCH secret_cursor INTO l_src_data; 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); EXIT WHEN secret_cursor%NOTFOUND; END LOOP; CLOSE secret_cursor; end; declare ;_src_data row(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=>l_src_data, typ=>l_type, key=>utl_i18n.string_to_raw(l_key,'AL32UTF8')); end; SELECT Price FROM PRODUCT WHERE ProductID = 5;修正这一段代码

2023-05-26 上传
2023-06-01 上传