`

plsql学习:批量 SQL

 
阅读更多
-- 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
#############################################
分享到:
评论

相关推荐

    PLSQL快速执行批量的SQL文件

    当你在文件夹里有很多很多很多的SQL文件需要执行时候,一个一个复制路径文件名出来执行肯定很慢很烦。 而且你不关心他们的执行顺序的时候,这时我们可以简单的利用Dos把文件夹里所有SQL文件的路径与文件名统一导成一...

    plsql批量导入数据

    在Oracle数据库环境中,PL/SQL Developer(简称PLSQL)是一种常用的工具,用于编写、调试和管理PL/SQL代码。当我们需要处理大量数据导入任务时,PLSQL提供了多种方法来实现批量导入,这些方法高效且灵活。本文将详细...

    pl sql批量执行多个sql文件和存储过程

    ### PL/SQL批量执行多个SQL文件和存储过程 在日常的数据库管理与开发工作中,经常需要执行大量的SQL脚本或调用多个存储过程。对于Oracle数据库而言,PL/SQL是一种非常强大的工具,它不仅可以用于编写复杂的数据库...

    plsql如何执行.sql文件?

    这些文件通常包含了SQL语句或PL/SQL代码块,用于创建表、视图、存储过程等数据库对象,或者用于批量插入数据等操作。本文将详细介绍如何使用 PL/SQL Developer 工具来执行 .sql 文件。 #### 1. 登录到数据库 首先...

    PLSQL 操作学习文档

    7. **存储过程和函数的创建与调用**:学习如何在PLSQL Developer中创建、修改和调用存储过程和函数,以及如何将它们暴露给其他应用程序使用。 8. **包的使用**:理解包的概念,它是将相关的过程、函数和变量封装在...

    PLSQL.rar_oracle_pl sql_plsql_plsql java_sql

    通过JDBC,Java开发者可以编写SQL语句,调用PLSQL存储过程,执行批量更新,并处理数据库连接。 文件列表中的“PL SQL.PDF”可能是一份详细的PLSQL参考指南或教程,涵盖了上述所有概念和实践。PDF格式通常用于电子书...

    plsql 插件CnPlugin expaste 批量复制 批量格式转化

    PLSQL Developer是一款流行的Oracle数据库管理工具,它提供了一个友好且高效的环境来编写、测试和调试PL/SQL代码。在这个环境中,CnPlugin是为增强PLSQL Developer功能而设计的一个插件,尤其是对于数据库操作和数据...

    PLSQL考试题目分享.pdf

    2. PL/SQL游标:在PL/SQL中,游标(CURSOR)用于批量处理数据,例如,在题目2中,使用游标来显示所有单价低于250元的玩具的单价。 知识点:PL/SQL游标、DECLARE语句、FETCH语句、CLOSE语句 3. EXISTS子查询:在SQL...

    PLSQL Developer v14.0.4.1982 64bit + SN(多语言版含简中)

    7. **脚本执行**:用户可以编写和执行批处理脚本,对数据库进行批量操作。 8. **界面定制**:根据个人喜好和工作需求,可以自定义界面布局和快捷键,提高工作效率。 9. **多语言支持**:包含多种语言的本地化版本...

    oracle_sql_plsql课程资料.zip

    综上所述,"oracle_sql_plsql课程资料.zip"中的内容可能涵盖了Oracle SQL的基础知识、PL/SQL的编程语法、实践应用案例,以及可能涉及到的高级主题。通过系统学习这些资料,你可以全面提升在Oracle数据库管理和开发...

    ORACLE8 PLSQL程序设计_sql_code.zip_oracle pl/sql_pl sql code_pl/sql_

    通过分析这些文件,开发者可以学习到如何在Oracle8环境中编写和执行PL/SQL代码,从而掌握数据库管理、数据操作和事务处理等核心技能。这些知识不仅适用于Oracle8,也适用于后来的Oracle版本,因为许多基础概念和语法...

    pl_sql.zip_fetch_pl/sql_pl_sql_plsql_plsql java

    总的来说,这个压缩包文件提供了一个全面的PL/SQL学习资源,涵盖了基础的SQL操作、游标使用、数据更新、触发器以及循环结构,并且展示了与Java的交互。通过分析和实践这些脚本,初学者可以深入理解PL/SQL编程,并...

    PLSQL Developer 8.0.3.1510

    - 用户可以编写和执行SQL脚本,进行批量数据操作或者数据库维护任务。 7. **性能优化**: - 内置的SQL解释器和性能分析工具可以帮助用户分析SQL语句的执行计划,识别性能瓶颈,并提供优化建议。 8. **集成开发...

    PLSQL Developer 9(绿色版,SQL Assistant 7.5适用)

    7. **脚本执行**:批量执行SQL脚本,简化数据库维护任务。 对于Oracle数据库开发者来说,PLSQL Developer 9结合SQL Assistant 7.5是一个非常实用的组合,能够极大地提高开发和管理效率。它不仅提供了全面的开发环境...

    PLSQL12免安装版

    3. **数据操作**:可以执行SQL查询,查看和编辑数据,支持批量操作。 4. **调试器**:内置的调试器可以帮助开发者追踪代码执行过程,设置断点,查看变量值,以便于找出程序中的问题。 5. **报表生成**:能够自定义...

    PLSQL使用大全,涵盖各种语法常用sql函数

    PLSQL(Procedural Language/Structured Query Language)是Oracle数据库中的一个强大编程工具,它将SQL的查询功能与过程性编程语言(如...通过深入学习和实践,你将能够熟练运用PLSQL解决实际问题,提高工作效率。

    pl/sql developer11.0

    4. **数据操作**:PL/SQL Developer允许直接在界面中查看、插入、更新和删除数据库中的数据,同时支持生成SQL脚本进行批量操作。 5. **数据库连接**:软件支持多种方式连接到Oracle数据库,包括TNS连接、Easy ...

    整理:oracle pl/sql 入门+ 数组使用+游标+动态SQL

    - 定义数组:学习如何声明并初始化数组,以及指定数组的大小和元素类型。 - 数组操作:包括赋值、索引访问、遍历数组等操作,以及如何在PL/SQL块中使用数组。 3. 游标: - 游标的概念:游标允许我们按需逐行处理...

    PLSQL Developer 8.0

    9. **脚本执行**:支持批量执行SQL脚本,对于数据库的初始化或升级任务特别有用。 10. **用户界面**:用户友好的界面设计使得操作直观,降低了学习曲线,使得初学者也能快速上手。 在Oracle 10G和11G环境中,PLSQL...

Global site tag (gtag.js) - Google Analytics