oracle中的复合数据类型

1)显示定义记录类型;

declare

--显示定义一个record类型myrec

type myrec is RECORD (

combine_no VARCHAR2(10),

department_code VARCHAR2(11)

);

-- 声明一个myrec类型的变量rcd;

rcd myrec;

begin

select nr.combine_no,nr.department_code  into rcd from rate_combine_nr nr where nr.combine_no=‘G600000001‘;

dbms_output.put_line(rcd.combine_no||‘-‘||rcd.department_code);

end;

2)有一些PL/SQL指令在使用隐式定义记录时没有使用%ROWTYPE属性,比如游标FOR循环;

declare

cursor mycur is

select * from rate_combine_nr nr where rownum <10;

rcd  mycur%rowtype; --这个可以省略;

begin

for rcd in mycur loop

dbms_output.put_line(rcd.combine_no||‘-‘||rcd.department_code);

end loop;

end;

3)PL/SQL有三种类型的集合

VARRAY集合中的元素的数量是有限,Index_by和嵌套表则是没有限制的

.)Index_by表

Index_by表集合的定义语法如下:

. TYPE type_name IS TABLE OF element_type [NOT NULL] INDEX BY BINARY_INTERGET;

. 这里面重要的关键字是INDEX BY BINARY_INTERGET,没有这个关键字,那么集合将是一个嵌套表;

. 一旦定义了index_by表,就可以向创建其他变量那样创建index_by表的变量;

.) 嵌套表

嵌套表非常类似于Index_by表,创建的语法也非常相似。使用TYPE语句,只是没有INDEX BY BINARY_INTEGER子串

TYPE type_name IS TABLE OF element_type [NOT NULL] ;

.)VARRAY

VARRAY或数据变量都有元素的限制。想起他集合一样VARRAY定义仍然使用TYPE语句,但关键字VARRAY或VARRYING

ARRAY告诉ORACLE这  是一个VARRAY集合。

TYPE type_name IS VARRAY (max_size) OF element_type [NOT NULL];

. 下标的取值从1开始;

时间: 2024-07-30 04:14:15

oracle中的复合数据类型的相关文章

oracle常用的复合数据类型 : BULK COLLECT(成批聚合类型)和数组集合type类型is table of 表%rowtype index by binary_integer

例1: 批量 查询部门号为 "10" 号的并把它们打印出来 . DECLARE TYPE emp_table_type IS TABLE OF my_emp%ROWTYPE INDEX BY BINARY_INTEGER; v_emp_table emp_table_type; BEGIN SELECT * BULK COLLECT INTO v_emp_table FROM my_emp WHERE deptno=&deptno; FOR i IN 1..v_emp_tabl

Oracle PL/SQL复合数据类型

复合数据类型大致可以分为两类.一类是记录类型,适用于处理单行多列数据,有点类似于java中的VO:一类是集合类型,适用于处理单列多行的数据,类似java中的List,以下实验在11.2.0.1.0版本下做的. 1.记录类型 drop table test purge; create table test ( id number(2), name varchar2(60) ); insert into test values(1,'aaa'); insert into test values(2,

10.PL_SQL——PL_SQL中的复合数据类型之RECORDS

一.记录和集合概述 目前为止所介绍的变量的数据类型都属于scalar,即标量,如整形,字符串,日期等等.任何一种编程语言都需要提供一些手段让用户创建更复杂的变量,PL/SQL也不例外,本章就来介绍一下PL/SQL中的复合型变量. PL/SQL的复合型变量主要包括两类: 1. Records:记录 2. Collection:集合.Collection又可以分为三种, a. Associative  Array(INDEXTBY table): 关联数组(或称索引表,和SQL中的INDEX OF

Oracle中的基本数据类型

一.Oracle 基本数据类型 1.字符数据类型 CHAR:存储固定长度的字符串,如果没有指定长度,默认为1个字节,如果数据长度没有达到指定的长度,则通过填充空格的方式来使其达到定义的长度(CHAR类型最多可以存储2000字节的数据) NCHAR:包含Unicode格式数据的定长字符串,最多可以存储2000个字节的数据 VARCHAR:不要使用VARCHAR数据类型.使用VARCHAR2数据类型.虽然VARCHAR数据类型目前是VARCHAR2的同义词,VARCHAR数据类型将计划被重新定义为一

11.PL_SQL——PL_SQL中的复合数据类型之COLLECTION(联合数组(Associative Arrays))

SQL> edit DECLARE TYPE list_of_names_t IS TABLEOF employees.first_name%TYPE INDEX BY PLS_INTEGER; happyfamily list_of_names_t; l_row PLS_INTEGER; BEGIN happyfamily(2020202020) :='Eli'; happyfamily(-15070) :='Steven'; happyfamily(-90900) :='Chris'; ha

【PLSQL】PLSQL中复合数据类型

1,常见的操作数据库的技术有那些 jdbc     使用java 访问数据库的技术    PLSQL  (procedure  过程化sql) 在数据库内部操作数据的技术    proc/c++    c 和 c++ 访问数据库的技术    ODBC      微软提供访问数据库的技术    OCI          oracle  底层的连接接口 2,Oracle中的复合数据类型 Oracle中的复合数据类型record,table,cursor 2.1 record类型 2.1.1 语法 /

Oracle中TIMESTAMP时间的显示格式

Oracle中的TIMESTAMP数据类型很多人用的都很少,所以即使最简单的一个查询返回的结果也会搞不清楚到底这个时间是什么时间点. 例如: 27-1月 -08 12.04.35.877000 上午 这个时间到底是几点呢?中午12:04分,那就错了,其实使用to_char函数转换后得到如下结果: 2008-01-27 00:04:35:877000 说明这个时间是凌晨的00:04分,而不是中午的12:04分. 发生此问题的原因如下: 示例: SELECT TO_CHAR(TO_DATE('200

关于oracle中数据类型的选择

由于是初学,犯了如下错误: 生成表的主键id时,用当前时间的毫秒值.而在oracle中定义主键id时,用的数据类型是char(32).在mybatis中通过id取数据怎么也取不出来.想了好几天,本来以为是浏览器中取id是带有空值,于是乎就用trim()函数去除空值,但还是没有查出数据,最后才发现是数据库中的数据类型定义成固定长度了,当前时间的毫秒值只有16位,而char(32)就是固定长度的32位,意思也就是说有16位是空格了,所有没法取出数据.动手将char(32)改成varchar2(32)

Oracle中PL/SQL简介、基本语法以及数据类型

Oracle中PL/SQL简介.基本语法以及数据类型 一.PL/SQL简介. Oracle PL/SQL语言(Procedural Language/SQL)是结合了结构化查询和Oracle自身过程控制为一体的强大语言,PL/SQL不但支持更多的数据类型,拥有自身的变量申明,赋值语句,而且还有条件,循环等流程控制语句.过程控制结构与SQL数据处理能力无缝的结合形成了强大的编程语言,可以创建过程和函数以及程序包. PL/SQL是一种块结构的语言,它将一组语句放在一个块中,一次性的发送给服务器,由服