`

Oracle PL/SQL 学习

 
阅读更多
/*
PL/SQL集合

1.
RECORD
由单行多列的标量构成的复合结构。可以看做是一种用户自定义数据类型。
01.TYPE t_emp IS RECORD(                 其中TYPE,IS,RECORD为关键字,record_name为变量名称
    field1 type [NOT NULL][:=expr1],         每个等价的成员间用逗号分隔
    field2 type [NOT NULL][:=expr2],        如果一个字段限定NOT NULL,那么它必须拥有一个初始值
    fieldn type [NOT NULL][:=exprn]        所有没有初始化的字段都会初始为NULL       
    )
2.    
%ROWTYPE
返回一个基于数据库定义的类型

3.TABLE 类型
TYPE tabletype IS TABLE OF type(类型名,要保存成的数据类型) INDEX BY BINARY_INTEGER


*/
---------RECORD 实验---------------------------------------------------------------------
CREATE TABLE USERS(ID NUMBER(4),LOGIN NUMBER(4),NAME VARCHAR2(10));
INSERT INTO USERS VALUES(1,1,'1');
INSERT INTO USERS VALUES(12,12,'12');
INSERT INTO USERS VALUES(11,11,'11');
INSERT INTO USERS VALUES(14,14,'14');
INSERT INTO USERS VALUES(15,15,'15');
COMMIT;
--存储过程
CREATE OR REPLACE PROCEDURE TEST_RECORD AS
  TYPE USER_RECORD_TYPE IS RECORD(
    MYID    USERS.ID%TYPE,--[变量名] [表名.字段名] [%TYPE],表示变量具有与数据库的表中某一字段相同的类型
    MYLOGIN USERS.LOGIN%TYPE,
    MYNAME  USERS.NAME%TYPE);
  U_R_T USER_RECORD_TYPE;
BEGIN
  FOR RECD IN (SELECT * FROM USERS) LOOP
    SELECT ID, LOGIN, NAME INTO U_R_T FROM USERS WHERE ID = RECD.ID;
    DBMS_OUTPUT.put_line('ID:' || U_R_T.MYID || ',LOGIN_ID:' ||
                         U_R_T.MYLOGIN || ',NAME:' || U_R_T.MYNAME);
  END LOOP;
END;
--打印结果
admin@ORCL> EXEC TEST_RECORD;
ID:15,LOGIN_ID:15,NAME:15
ID:1,LOGIN_ID:1,NAME:1
ID:12,LOGIN_ID:12,NAME:12
ID:11,LOGIN_ID:11,NAME:11
ID:14,LOGIN_ID:14,NAME:14

PL/SQL 过程已成功完成。


--使用一下 ROWTYPE
CREATE OR REPLACE PROCEDURE TEST_RECORD AS
   U_R_T USERS%ROWTYPE;--相当于RECORD的简化版,集合的属性直接根据表结构来定
BEGIN
  FOR RECD IN (SELECT * FROM USERS) LOOP
    SELECT ID, LOGIN, NAME INTO U_R_T FROM USERS WHERE ID = RECD.ID;
    DBMS_OUTPUT.put_line('ID:' || U_R_T.ID || ',LOGIN_ID:' ||
                         U_R_T.LOGIN || ',NAME:' || U_R_T.NAME);
  END LOOP;
END;
--打印结果
admin@ORCL> exec TEST_RECORD;
ID:15,LOGIN_ID:15,NAME:15
ID:1,LOGIN_ID:1,NAME:1
ID:12,LOGIN_ID:12,NAME:12
ID:11,LOGIN_ID:11,NAME:11
ID:14,LOGIN_ID:14,NAME:14

PL/SQL 过程已成功完成。

--再来看个调用输出的过程
CREATE OR REPLACE PROCEDURE TEST_RECORD (VAL_RETURN OUT USERS%ROWTYPE)AS
   U_R_T USERS%ROWTYPE;--相当于RECORD的简化版,集合的属性直接根据表结构来定
BEGIN
    SELECT ID, LOGIN, NAME INTO U_R_T FROM USERS WHERE ID = 12;
    VAL_RETURN := U_R_T;
END;

admin@ORCL> DECLARE
  2  ID USERS%ROWTYPE;
  3  BEGIN
  4  TEST_RECORD(ID);
  5  DBMS_OUTPUT.PUT_LINE('ID IS: '||ID.ID||',NAME IS: '||ID.NAME);
  6  END;
  7  /
ID IS: 12,NAME IS: 12

PL/SQL 过程已成功完成。

---------TABLE 实验------------------------------------------------------------------
DECLARE
  TYPE T_TAB IS TABLE OF USERS%ROWTYPE;
  V_TAB   T_TAB;
  I       INT := 0;
  V_COUNT INT := 0;
BEGIN
  V_TAB := T_TAB(); --用不带参数的构造函数初始化一个空表,这个步骤为必须。否者会报错 ORA-06531: 引用未初始化的收集
  DBMS_OUTPUT.PUT_LINE('表USERS共有' || V_COUNT || '条记录');
  FOR REC IN (SELECT * FROM USERS) LOOP
    I := I + 1;
    V_TAB.EXTEND; --增加一条空表
    SELECT * INTO V_TAB(I) FROM USERS WHERE ID = REC.ID;
  END LOOP;
  V_COUNT := V_TAB.COUNT;
  DBMS_OUTPUT.PUT_LINE('元素个数' || V_COUNT);
  DBMS_OUTPUT.PUT_LINE('第一个元素' || V_TAB.FIRST);
  DBMS_OUTPUT.PUT_LINE('最后一个元素' || V_TAB.LAST);
  FOR N IN 1 .. V_COUNT LOOP
    DBMS_OUTPUT.PUT_LINE(V_TAB(N).ID || ',' || V_TAB(N).LOGIN);
  END LOOP;
  DBMS_OUTPUT.PUT_LINE('---------------------------'); 
END;
  /
表USERS共有0条记录
元素个数5
第一个元素1
最后一个元素5
10,10
15,15
12,12
11,11
14,14
---------------------------

PL/SQL 过程已成功完成。


--------REF CURSOR实验-----------------------------------------------------------------
http://wenku.baidu.com/view/dd3d0e305a8102d276a22f5a.html

-------TABLE  集合-------------------------------------------------------------------
http://www.cnblogs.com/JavaCharp/archive/2010/03/26/1697266.html







 

分享到:
评论

相关推荐

    Oracle PL/SQL学习官方教材

    以下是对"Oracle PL/SQL学习官方教材"中可能包含的主要知识点的详细解释: 1. **基础概念**:首先,教材会介绍PL/SQL的基本概念,包括块(Block)、变量(Variable)、常量(Constant)、数据类型(Data Types)和...

    Oracle PL/SQL实战(待续)

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据处理能力与PL的程序设计...通过实践和学习"Oracle PL/SQL实战(待续)"的相关内容,我们可以提升在Oracle环境中解决问题的能力,更好地管理和优化数据库系统。

    Oracle PL/SQL程序设计(第5版)(上下册)

    - **集合与记录**:学习如何使用PL/SQL中的集合和记录类型,这些结构可以帮助更高效地处理数据集。 - **游标**:介绍游标的使用方法,包括隐式游标和显式游标,以及如何利用游标遍历查询结果。 #### 四、PL/SQL中的...

    oracle pl/sql从入门到精通 配套源代码

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL(结构化查询语言)的数据库操作功能与PL/SQL的程序设计特性,广泛应用于Oracle数据库的开发和管理。这本书"Oracle PL/SQL从入门到精通"的配套源代码,显然是为了...

    Oracle PL/SQL程序设计(第5版)(套装上下册)

    《Oracle PL/SQL程序设计(第5版)(套装上下册)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何...

    Oracle PL/SQL实例精解 数据库建立代码

    总结起来,"Oracle PL/SQL实例精解 数据库建立代码"涵盖了数据库设计、对象创建、索引优化以及数据插入等多个方面,是学习和提升Oracle数据库管理技能的宝贵资源。通过解析和执行这些示例,开发者可以更好地理解和...

    Oracle PL/SQL 实例精解(第4版涵盖Oracle 11g)+源码脚本

    Oracle PL/SQL是一种强大的编程语言,它将关系数据库的强大功能与结构化编程的优点结合在一起,是Oracle数据库系统中不可或缺的一部分。在"Oracle PL/SQL 实例精解(第4版涵盖Oracle 11g)+源码脚本"中,读者可以深入...

    ORACLE PL/SQL从入门到精通

    ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括...这本书籍将为读者提供一个全面、系统的学习路径,帮助数据库管理员、开发人员深入理解并掌握ORACLE PL/SQL的强大功能和应用技巧。

    Oracle PL/SQL专家指南-高级PL/SQL解决方案的设计与开发

    通过学习这些内容,开发者可以掌握Oracle PL/SQL的高级特性,从而设计和实现更高效、更稳定的数据库应用程序。无论你是数据库管理员、系统架构师还是开发人员,这本书都将为你提供宝贵的指导,助你在Oracle数据库...

    oracle pl/sql实例精讲student数据库模式数据和表脚本

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据库操作能力和Procedural Language的编程结构,用于在Oracle数据库环境中创建复杂的应用程序。在"Oracle PL/SQL实例精讲student数据库模式"中,我们将深入探讨...

    oracle pl/sql 实例精解(中文原书第4版)

    本书是一本逐步分解的,详尽的pl/sql编程教程,使用真实场景的试验、范例和练习来介绍读者所需的pl/sql编程技能,涵盖oracle 11g的最新特性。作者的写作手法源自于在哥伦比亚大学教授pl/sql编程技术的经验,深度...

    oracle10g_pl/sql

    通过深入学习Oracle 10g PL/SQL,不仅可以掌握数据库编程的基本技能,还能了解如何利用这些技能来设计和实现复杂的业务逻辑,优化数据库性能,以及更好地维护和管理Oracle数据库系统。本教程涵盖了所有这些关键知识...

    Oracle PL/SQL best practice

    Oracle PL/SQL最佳实践 Oracle PL/SQL是一种强大的编程语言,用于在Oracle数据库环境中构建复杂的业务逻辑和数据处理任务。Steven Feuerstein,被誉为Oracle PL/SQL语言的大师,分享了他在这一领域的关键最佳实践和...

    oracle PL/SQL pdf学习资料

    oracle PL/SQL pdf学习资料oracle PL/SQL pdf学习资料oracle PL/SQL pdf学习资料oracle PL/SQL pdf学习资料oracle PL/SQL pdf学习资料

    Oracle PL/SQL programming(5th Edition)

    ### Oracle PL/SQL Programming知识点概览 #### 一、书籍基本信息 ...通过阅读本书,读者可以快速掌握PL/SQL的基础知识,并学习如何利用Oracle Database 11g Release 2的强大功能来构建高效的应用程序。

    oracle 9i pl/sql程序设计笔记

    ### Oracle 9i PL/SQL程序设计笔记精要 #### PL/SQL基础知识概览 **标题与描述**:本文档围绕“Oracle 9i PL/SQL程序设计笔记”这一核心主题,深入探讨了PL/SQL语言的基础知识及其在Oracle 9i数据库环境中的应用。...

    Oracle PL/SQL by Example(4th Edition)

    《Oracle PL/SQL by Example(4th Edition)》是一本专为Oracle数据库用户设计的PL/SQL编程指南,尤其适合那些希望通过实践学习这一强大的过程式语言的开发者。本书的第四版详细介绍了Oracle PL/SQL的各种核心概念和...

    《精通Oracle PL/SQL》源码

    Oracle PL/SQL是一种强大的编程语言,...记得结合书中的解释和说明,逐步剖析和学习每个示例,这样能够更有效地掌握Oracle PL/SQL的精髓。同时,不断实践和调试代码,将有助于你在实际工作中更好地应对各种数据库挑战。

Global site tag (gtag.js) - Google Analytics