-- THE INDICES OF OPTION
-- As stated previously, the INDICES OF option enables you to loop through a sparse collection.
-- Recall that such a collection may be a nested table or an associative array. The use of the
-- INDICES OF option is illustrated in the following example:
----------------------------------------------------------------------------
declare
--define collection types and variables
type row_num_type is table of number index by pls_integer;
type row_text_type is table of varchar2(10) index by pls_integer;
row_num_tab row_num_type;
row_text_tab row_text_type;
v_total number;
begin
--populate collections
for i in 1..10 loop
row_num_tab(i) := i;
row_text_tab(i) := 'row '||i;
end loop;
--delete 1,5, and 7 elements of collections
row_num_tab.delete(1);row_text_tab.delete(1);
row_num_tab.delete(5);row_text_tab.delete(5);
row_num_tab.delete(7);row_text_tab.delete(7);
--populate test table
forall i in indices of row_num_tab
insert into test (row_num,row_text)
values(row_num_tab(i),row_text_tab(i));
commit;
select count(*) into v_total from test;
dbms_output.put_line('there are'||v_total||'rows in the test table');
end;
======================================================================
-- THE VALUES OF OPTION
-- The VALUES OF option specifies that the values of the loop counter in the FORALL statement
-- are based on the values of the elements of the specified collection. Essentially, this collection is
-- a group of indexes that the FORALL statement can loop through. Furthermore, these indexes
-- do not need to be unique and can be listed in arbitrary order. The following example demonstrates
-- the use of the VALUES OF option:
DECLARE
-- Define collection types and variables
TYPE row_num_type IS TABLE OF NUMBER INDEX BY PLS_INTEGER;
TYPE row_text_type IS TABLE OF VARCHAR2(11) INDEX BY PLS_INTEGER;
TYPE exc_ind_type IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER;
row_num_tab row_num_type;
row_text_tab row_text_type;
exc_ind_tab exc_ind_type;
-- Define user-defined exception and associated Oracle
-- error number with it
errors EXCEPTION;
PRAGMA EXCEPTION_INIT(errors, -24381);
BEGIN
-- Populate collections
FOR i IN 1..10 LOOP
row_num_tab(i) := i;
row_text_tab(i) := 'row '||i;
END LOOP;
-- Modify 1, 5, and 7 elements of the V_ROW_TEXT collection
-- These rows will cause exception in the FORALL statement
row_text_tab(1) := RPAD(row_text_tab(1), 11, ' ');
row_text_tab(5) := RPAD(row_text_tab(5), 11, ' ');
row_text_tab(7) := RPAD(row_text_tab(7), 11, ' ');
-- Populate TEST table
FORALL i IN 1..10 SAVE EXCEPTIONS
INSERT INTO test (row_num, row_text)
VALUES (row_num_tab(i), row_text_tab(i));
COMMIT;
EXCEPTION
WHEN errors THEN
-- Populate V_EXC_IND_TAB collection to be used in the VALUES
-- OF clause
FOR i in 1.. SQL%BULK_EXCEPTIONS.COUNT LOOP
exc_ind_tab(i) := SQL%BULK_EXCEPTIONS(i).error_index;
END LOOP;
-- Insert records that caused exceptions in the TEST_EXC
-- table
FORALL i in VALUES OF exc_ind_tab
INSERT INTO test_exc (row_num, row_text)
VALUES (row_num_tab(i), row_text_tab(i));
COMMIT;
END;
###############################
# select * from test;
# ROW_NUM ROW_TEXT
# ---------- ----------
# 2 row 2
# 3 row 3
# 4 row 4
# 6 row 6
# 8 row 8
# 9 row 9
# 10 row 10
#
# 7 rows selected.
# select * from test_exc;
# ROW_NUM ROW_TEXT
# ---------- --------------------------------------------------
# 1 row 1
# 5 row 5
# 7 row 7
#############################################
分享到:
相关推荐
当你在文件夹里有很多很多很多的SQL文件需要执行时候,一个一个复制路径文件名出来执行肯定很慢很烦。 而且你不关心他们的执行顺序的时候,这时我们可以简单的利用Dos把文件夹里所有SQL文件的路径与文件名统一导成一...
在Oracle数据库环境中,PL/SQL Developer(简称PLSQL)是一种常用的工具,用于编写、调试和管理PL/SQL代码。当我们需要处理大量数据导入任务时,PLSQL提供了多种方法来实现批量导入,这些方法高效且灵活。本文将详细...
### PL/SQL批量执行多个SQL文件和存储过程 在日常的数据库管理与开发工作中,经常需要执行大量的SQL脚本或调用多个存储过程。对于Oracle数据库而言,PL/SQL是一种非常强大的工具,它不仅可以用于编写复杂的数据库...
这些文件通常包含了SQL语句或PL/SQL代码块,用于创建表、视图、存储过程等数据库对象,或者用于批量插入数据等操作。本文将详细介绍如何使用 PL/SQL Developer 工具来执行 .sql 文件。 #### 1. 登录到数据库 首先...
7. **存储过程和函数的创建与调用**:学习如何在PLSQL Developer中创建、修改和调用存储过程和函数,以及如何将它们暴露给其他应用程序使用。 8. **包的使用**:理解包的概念,它是将相关的过程、函数和变量封装在...
通过JDBC,Java开发者可以编写SQL语句,调用PLSQL存储过程,执行批量更新,并处理数据库连接。 文件列表中的“PL SQL.PDF”可能是一份详细的PLSQL参考指南或教程,涵盖了上述所有概念和实践。PDF格式通常用于电子书...
PLSQL Developer是一款流行的Oracle数据库管理工具,它提供了一个友好且高效的环境来编写、测试和调试PL/SQL代码。在这个环境中,CnPlugin是为增强PLSQL Developer功能而设计的一个插件,尤其是对于数据库操作和数据...
2. PL/SQL游标:在PL/SQL中,游标(CURSOR)用于批量处理数据,例如,在题目2中,使用游标来显示所有单价低于250元的玩具的单价。 知识点:PL/SQL游标、DECLARE语句、FETCH语句、CLOSE语句 3. EXISTS子查询:在SQL...
7. **脚本执行**:用户可以编写和执行批处理脚本,对数据库进行批量操作。 8. **界面定制**:根据个人喜好和工作需求,可以自定义界面布局和快捷键,提高工作效率。 9. **多语言支持**:包含多种语言的本地化版本...
综上所述,"oracle_sql_plsql课程资料.zip"中的内容可能涵盖了Oracle SQL的基础知识、PL/SQL的编程语法、实践应用案例,以及可能涉及到的高级主题。通过系统学习这些资料,你可以全面提升在Oracle数据库管理和开发...
通过分析这些文件,开发者可以学习到如何在Oracle8环境中编写和执行PL/SQL代码,从而掌握数据库管理、数据操作和事务处理等核心技能。这些知识不仅适用于Oracle8,也适用于后来的Oracle版本,因为许多基础概念和语法...
总的来说,这个压缩包文件提供了一个全面的PL/SQL学习资源,涵盖了基础的SQL操作、游标使用、数据更新、触发器以及循环结构,并且展示了与Java的交互。通过分析和实践这些脚本,初学者可以深入理解PL/SQL编程,并...
- 用户可以编写和执行SQL脚本,进行批量数据操作或者数据库维护任务。 7. **性能优化**: - 内置的SQL解释器和性能分析工具可以帮助用户分析SQL语句的执行计划,识别性能瓶颈,并提供优化建议。 8. **集成开发...
### PL/SQL学习资料:PL/SQL Developer 7.0用户指南详解 #### 一、引言 在数据库管理与编程领域,Oracle的PL/SQL(Procedure Language for SQL)是不可或缺的一部分,它允许开发者在Oracle数据库环境中编写过程化...
7. **脚本执行**:批量执行SQL脚本,简化数据库维护任务。 对于Oracle数据库开发者来说,PLSQL Developer 9结合SQL Assistant 7.5是一个非常实用的组合,能够极大地提高开发和管理效率。它不仅提供了全面的开发环境...
3. **数据操作**:可以执行SQL查询,查看和编辑数据,支持批量操作。 4. **调试器**:内置的调试器可以帮助开发者追踪代码执行过程,设置断点,查看变量值,以便于找出程序中的问题。 5. **报表生成**:能够自定义...
PLSQL(Procedural Language/Structured Query Language)是Oracle数据库中的一个强大编程工具,它将SQL的查询功能与过程性编程语言(如...通过深入学习和实践,你将能够熟练运用PLSQL解决实际问题,提高工作效率。
4. **数据操作**:PL/SQL Developer允许直接在界面中查看、插入、更新和删除数据库中的数据,同时支持生成SQL脚本进行批量操作。 5. **数据库连接**:软件支持多种方式连接到Oracle数据库,包括TNS连接、Easy ...
- 定义数组:学习如何声明并初始化数组,以及指定数组的大小和元素类型。 - 数组操作:包括赋值、索引访问、遍历数组等操作,以及如何在PL/SQL块中使用数组。 3. 游标: - 游标的概念:游标允许我们按需逐行处理...
9. **脚本执行**:支持批量执行SQL脚本,对于数据库的初始化或升级任务特别有用。 10. **用户界面**:用户友好的界面设计使得操作直观,降低了学习曲线,使得初学者也能快速上手。 在Oracle 10G和11G环境中,PLSQL...