`
keepwork
  • 浏览: 334254 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Oracle--对象类型

 
阅读更多

 开发者博客www.developsearch.com

 

 

扩展已知的数组空间(extend)

DECLARE
    TYPE   CourseList   IS   TABLE   OF   VARCHAR2(10);
      courses   CourseList;
BEGIN
      --   初始化数组元素,大小为3
      courses   :=   CourseList( 'Biol   4412 ',   'Psyc   3112 ',   'Anth   3001 ');
      --   为数组增加一个元素,数组大小为4,末尾的元素为NULL
      courses.EXTEND;     --   append   one   null   element
      --   为增加的元素赋值,如果没用EXTEND,这里会出错
      courses(4)   :=   'Engl   2005 ';
end
 

 

 

模拟字符对象

-- 创建组合SETIDS表集合类型
CREATE OR REPLACE TYPE TBL_SPLIT_TYPE IS TABLE OF VARCHAR2 (4000);

--字符串分割函数
FUNCTION SPLIT_STR(  P_STR       IN VARCHAR2,
                     P_DELIMITER IN VARCHAR2 DEFAULT (','))
    RETURN TBL_SPLIT_TYPE IS
    J        INT := 0;
    I        INT := 1;
    LEN      INT := 0;
    LEN1     INT := 0;
    STR      VARCHAR2(4000);
    MY_SPLIT TBL_SPLIT_TYPE := TBL_SPLIT_TYPE();
  BEGIN
    LEN  := LENGTH(P_STR);
    LEN1 := LENGTH(P_DELIMITER);
  
    WHILE J < LEN LOOP
      J := INSTR(P_STR, P_DELIMITER, I);
    
      IF J = 0 THEN
        J   := LEN;
        STR := SUBSTR(P_STR, I);
        MY_SPLIT.EXTEND;
        MY_SPLIT(MY_SPLIT.COUNT) := STR;
      
        IF I >= LEN THEN
          EXIT;
        END IF;
      ELSE
        STR := SUBSTR(P_STR, I, J - I);
        I   := J + LEN1;
        MY_SPLIT.EXTEND;
        MY_SPLIT(MY_SPLIT.COUNT) := STR;
      END IF;
    END LOOP;
  
    RETURN MY_SPLIT;
  END;

 

 

 

模拟集合对象

-- 创建流向的数据结构 模拟当个集合的单个流向
CREATE OR REPLACE TYPE OBJ_DIST_CODE AS OBJECT
(
  ORG_DIST_CODE  VARCHAR2(30),
  ORG_TYPE_CODE  VARCHAR2(2),
  DESC_DIST_CODE VARCHAR(30),
  DESC_TYPE_CODE VARCHAR2(2)
);

-- 创建流向的数据结构集合 模拟当个集合的所有流向
CREATE OR REPLACE TYPE ARR_OBJ_DIST_CODE AS VARRAY(1000) OF OBJ_DIST_CODE;

-- 验证单个组合中的多个流向是否存在重叠
PROCEDURE VALIDATE_DIST_CODES(  ARR_OBJ IN ARR_OBJ_DIST_CODE,
                                MSG     IN OUT VARCHAR2) AS
    V_COUNT            NUMBER;
    V_ORG_DIST_NAME_A  VARCHAR2(100);
    V_DESC_DIST_NAME_A VARCHAR2(100);
    V_ORG_DIST_NAME_B  VARCHAR2(100);
    V_DESC_DIST_NAME_B VARCHAR2(100);
  BEGIN
    FOR I IN 1 .. ARR_OBJ.COUNT() LOOP
      FOR J IN (I + 1) .. ARR_OBJ.COUNT() LOOP
      
        -- 先判断原寄地是否存在重叠,根据结果在判断目的地是否存在重叠
        V_COUNT := COUNT_DIST_CODE(ARR_OBJ(I).ORG_DIST_CODE,
                                   ARR_OBJ(I).ORG_TYPE_CODE,
                                   ARR_OBJ(J).ORG_DIST_CODE);
      
        -- 判断原寄地是否重叠
        IF V_COUNT > 0 THEN
          V_COUNT := COUNT_DIST_CODE(ARR_OBJ(I).DESC_DIST_CODE,
                                     ARR_OBJ(I).DESC_TYPE_CODE,
                                     ARR_OBJ(J).DESC_DIST_CODE);
        
          -- 判断目的地是否重叠
          IF V_COUNT > 0 THEN
          
            V_ORG_DIST_NAME_A  := GET_DIST_NAME_BY_DISTCODE(ARR_OBJ(I).ORG_DIST_CODE);
            V_DESC_DIST_NAME_A := GET_DIST_NAME_BY_DISTCODE(ARR_OBJ(I).DESC_DIST_CODE);
            V_ORG_DIST_NAME_B  := GET_DIST_NAME_BY_DISTCODE(ARR_OBJ(J).ORG_DIST_CODE);
            V_DESC_DIST_NAME_B := GET_DIST_NAME_BY_DISTCODE(ARR_OBJ(J).DESC_DIST_CODE);
          
            MSG := '{0}' || V_ORG_DIST_NAME_A || 
                   '{1}' || V_DESC_DIST_NAME_A || 
                   '{2}' || V_ORG_DIST_NAME_B ||
                   '{3}' || V_DESC_DIST_NAME_B || 
                   '{4}';
          
          END IF;
        END IF;
      END LOOP;
    END LOOP;
  END;

 

 开发者博客www.developsearch.com

分享到:
评论

相关推荐

    cx_Oracle-5.1.3.tar.gz,oracle-instantclient11.2

    cx_Oracle库提供了丰富的数据类型映射,使得Python对象可以直接与Oracle数据库的列类型对应,如将Python的字符串映射到Oracle的VARCHAR2,将整数映射到NUMBER等。 此外,描述中提到了pymongo-3.6.1.tar.gz,这是...

    cx_Oracle-7.3.0.tar.gz

    - 可以处理 LOB(大型对象)数据类型,如 BFILE、BLOB、CLOB 和 NCLOB。 10. **集成其他框架**: - `cx_Oracle` 可以与 Flask、Django 等 Web 框架结合,为 Web 应用提供数据库支持。 综上所述,`cx_Oracle-...

    oracle-j2sdk1.8-1.8.0+update181-1.x86-64.rpm

    - **类型接口**: 针对泛型类型引入了类型接口,如Optional,增强了代码的可读性和安全性。 3. **RPM包管理**: - **安装**: 使用`rpm -i`或`yum install`命令来安装RPM包,系统会自动处理依赖关系。 - **查询**: ...

    oracle-instantclient.11.2.zip

    - 选择“Oracle”作为连接类型。 - 输入连接名称,然后在“连接详情”区域填写以下信息: - 主机名:Oracle数据库服务器的IP地址或主机名。 - 端口:默认为1521,但可能根据服务器配置不同。 - 服务名/SID:从...

    sqlplus 11.2 安装包oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm

    通过SQL*Plus,你可以执行脚本、创建报告、进行数据操作以及管理数据库对象,如表、视图、存储过程等。它提供了丰富的交互式环境和高级特性,如格式化输出、条件处理、批处理等。 2. **Oracle Instant Client**:这...

    cx_Oracle-6.0b2-py3.6-win32.rar

    在Python中,使用cx_Oracle首先需要创建一个连接对象,通过连接对象我们可以打开游标来执行SQL语句。下面是一个简单的示例: ```python import cx_Oracle dsn = cx_Oracle.makedsn('hostname', 'port', 'service_...

    cx_Oracle-5.2.1-11g.win-amd64-py3.5

    5. **数据类型映射**:cx_Oracle将Oracle的数据类型与Python的数据类型进行映射,使得在Python中操作Oracle数据库变得直观,如将Oracle的DATE类型映射为Python的datetime对象。 6. **异常处理**:cx_Oracle提供了与...

    cx_Oracle-7.3.0-cp36-cp36m-win_amd64.txt

    2. **SQL执行**:支持执行各种类型的SQL语句,如SELECT、INSERT、UPDATE、DELETE等。 3. **事务处理**:支持事务的开始、提交和回滚,确保数据的一致性和完整性。 4. **性能优化**:提供批量插入、查询缓存等功能,...

    cx_Oracle-5.1.3.tar.gz

    - 自动类型映射,将Oracle数据类型自动转换为Python数据类型。 - 支持事务控制,包括提交、回滚和保存点。 - 连接池管理,用于提高性能和资源利用率。 总的来说,cx_Oracle是Python开发者在Oracle数据库环境下不可...

    oracle-jdbc-12.2.0.1.zip

    Oracle JDBC驱动主要有四种类型: Thin、 Thick、JDBC-ODBC Bridge和Universal Driver,其中 Thin 驱动是最常用的一种,因为它是一种轻量级的纯Java实现,无需在客户端安装Oracle数据库客户端软件。 ojdbc8-资源....

    oracle-java数据类型1

    - `BFILE` 类型是 Oracle 特有的大对象类型,用于存储外部文件,没有对应的 JDBC 类型,但可以通过 `oracle.jdbc.OracleTypes.BFILE` 访问 - `ROWID` 类型是 Oracle 的行标识符,没有对应的 JDBC 类型,通过 `...

    Oracle-OCI(Oracle-Call-Interface)官方文档翻译

    OCI提供了多种功能,包括支持大量用户的安全、灵活的多线程API集合,用于管理数据库访问、处理SQL语句和管理Oracle数据库对象的SQL访问函数,以及数据类型映射和操作函数,用于管理Oracle类型的数据属性。...

    cx_Oracle-5.1.2.tar.gz

    6. **类型映射**:cx_Oracle自动处理Python类型与Oracle数据库类型的映射,如字符串、整数、日期等,同时也支持自定义类型映射。 7. **游标属性**:游标对象有多个属性,如`rowcount`(返回受影响的行数)、`...

    cx_Oracle-6.1.tar.gz

    同时,它还能处理Oracle的特殊数据类型,如BFILE、CLOB、NCLOB、BLOB、DATE等。 4. **异常处理**:cx_Oracle库封装了Oracle数据库的所有错误和警告,将其转化为Python的异常,方便开发者捕获和处理。 5. **游标...

    oracle优化------缓存对象与数据

    ### Oracle优化——缓存对象与数据 #### 一、引言 在Oracle数据库优化领域,缓存机制是一项关键的技术手段,旨在通过将频繁访问的数据和对象保留在内存中来提高系统的响应速度和整体性能。本篇文章将深入探讨Oracle...

    0001-Oracle-系统-视图

    例如,`DBA_OBJECTS`视图提供了所有对象的详细信息,包括对象类型、所有者、创建时间等;`V$SESSION`视图则展示了当前数据库会话的状态。 `0001-Oracle-系统-视图.sql`文件可能包含了一系列查询,用于演示如何使用...

    开源项目-go-goracle-goracle.zip

    6. **数据类型映射**:goracle将Oracle数据库的特定数据类型与Go语言的内置数据类型进行映射,使得在Go中操作Oracle数据变得直观和方便。 7. **错误处理和日志记录**:为了提供良好的用户体验,goracle会捕获并处理...

    oracle安装-卸载-初识oracle-笔记

    安装后,你可以通过它来执行SQL查询、创建和管理数据库对象。 五、Oracle卸载 卸载Oracle时需谨慎操作,确保先停止所有Oracle服务,然后通过控制面板或专门的卸载工具逐个移除组件,包括数据库实例、客户端和服务。...

    涂抹Oracle--三思笔记之一步一步学Oracle 完整版

    同时,Oracle 也提供了权限控制机制,允许管理员对数据库对象和资源进行权限管理。 5. 传输数据: 使用 Oracle 的数据传输工具 Data Pump 和 SQL*Loader 进行数据传输。 Data Pump 是 Oracle 提供的一个数据传输...

    oracle-sql.rar_oracle

    Oracle SQL的特性还包括对复杂数据类型的处理,如LOB(大型对象)类型,支持存储图像、音频或大型文本数据。此外,还有PL/SQL,这是一种过程化语言,允许用户编写存储过程、函数、触发器等,以增强数据库的业务逻辑...

Global site tag (gtag.js) - Google Analytics