oracle 数组类型

create or replace function my_test(p_str varchar2)
return number
as
--普通变量
v_var varchar2(1000);
--固定长度数组
type v_ar is varray(10) of varchar2(30);
my_ar v_ar:=v_ar(‘g‘,‘m‘,‘d‘,‘龚‘,‘帅‘);

--可变长度数值
type type_array is table of varchar2(20) index by binary_integer;
var_array type_array;  

--类似二维数组
type serv_array is table of itmis_pri_serv_tbl%rowtype index by binary_integer;
var_serv serv_array;

--记录块,保存一条记录的变量,类似C的struct
TYPE t_myRecord is record (
Field1 number,
Field2 varchar2(50));
var_record t_myRecord;

begin
v_var := ‘hello world‘;
dbms_output.put_line(v_var);

 for i in 1..my_ar.count
  loop
      dbms_output.put_line(my_ar(i));
  end loop;
------------------------------------------
 var_array(1):=‘aa‘;
 var_array(2):=‘bb‘;                    --下标必须是连续的
 for i in 1..var_array.count
  loop
     dbms_output.put_line( var_array(i));  

  end loop;
-------------------------------------------- 可以作为一个临时表变量来使用
--select *  bulk collect into var_serv from itmis_pri_serv_tbl where year =2013; --类似二维数组
select * bulk collect into var_serv from itmis_pri_serv_tbl ;

--二维数组的访问
  for i in 1..var_serv.count loop
         dbms_output.put_line(var_serv(i).serv_id);
        dbms_output.put_line(var_serv(i).status);
  end loop;

--记录快访问
WITH temp(id,name) as(
select 1,‘sam‘ from dual union all
select 2,‘tom‘ from dual union all
select 3,‘Kelly‘ from dual
)
Select id,name
Into var_record
From temp
where id = 1
;
dbms_output.put_line(‘var_record:‘||var_record.Field1||‘  ‘||var_record.Field2) ;

return length(p_str);

end;

/*
1.COUNT             返回集合中元素的个数
2.DELETE            删除集合中所有元素
3.DELETE(x)         删除元素下标为x的元素      对VARRAY非法
4.DELETE(x,y)       删除元素下标从X到Y的元素   对VARRAY非法
5.EXIST(x)          如果集合元素x已经初始化,则返回TRUE, 否则返回FALSE
6.EXTEND            在集合末尾添加一个元素      对Index_by非法
7.EXTEND(x)         在集合末尾添加x个元素       对Index_by非法
8.EXTEND(x,n)       在集合末尾添加元素n的x个副本 对Index_by非法
9.FIRST             返回集合中的第一个元素的下标号,对于VARRAY集合始终返回1。
10.LAST              返回集合中最后一个元素的下标号, 对于VARRAY返回值始终等于COUNT.
11.LIMIT             返回VARRY集合的最大的元素个数   Index_by集合和嵌套表无用
12.NEXT(x)           返回在第x个元素之后及紧挨着它的元素值,如果x是最后一个元素,返回null.
13.PRIOR(x)          返回在第x个元素之前紧挨着它的元素的值,如果x是第一个元素,则返回null。
14.TRIM              从集合末端开始删除一个元素  对于index_by不合法
15.TRIM(x)           从集合末端开始删除x个元素
var_array.next(3);   //返回var_array(3)
*/

oracle 数组类型

时间: 2024-10-10 18:17:57

oracle 数组类型的相关文章

Oracle数组类型

Oracle数组类型 Oracle的数组类型,范例: Sql代码 create or replace function my_test(p_str varchar2) return number as --普通变量 v_var varchar2(1000); --固定长度数组 type v_ar is varray(10) of varchar2(30); my_ar v_ar:=v_ar('g','m','d','龚','帅'); --可变长度数值 type type_array is tab

java调用oracle数组类型

首先当然是在oracle中建立type CREATE OR REPLACE TYPE cux_proxy_bid_award_rec IS OBJECT ( trading_partner_id NUMBER, bid_price NUMBER, bid_publish_date DATE, bid_award_flag VARCHAR2(10) ); 再建立引用type CREATE OR REPLACE TYPE cux_proxy_bid_award_tbl IS TABLE OF CUX

oracle学习之路(二)------数组类型/记录类型的使用

Oracle记录类型介绍 RECORD:用户自定义数据类型,由单行多列的标量构成的复合数据类型,它将一个或多个标量封装成一个对象进行操作记录不可以总体拿来比较也不可以整体判断为空,可以整体拿来赋值,组成类似于多维数组, 将一个或多个标量封装成一个对象进行操作.是一种临时复合对象类型. 记录的创建和赋值 定义记录类型语法如下: TYPE record_name IS RECORD( v1 data_type1 [NOT NULL] [:= default_value ], v2 data_type

数组 类型 在 存储过程中 使用

oracle 之定义数组类型 注:本文来源:<oracle 之定义数组类型 > oracle 数组类型,没有现成的类型,但是可以自己随意定义,很方便. Oracle 数组可以分为定长数组和可变长的数组两类.以下主要是一维数组介绍: 1:定长数组: 1 /*定长字符数组,数组大小为10*/ 2 declare 3 type v_arr is varray(10) of varchar2(30); 4 my_arr v_arr; 5 my_arr:=v_arr('1','2','3'); 6 be

java 实现往oracle存储过程中传递array数组类型的参数

注:本文来源于 <  java 实现往oracle存储过程中传递array数组类型的参数  > 最近项目中遇到通过往存储过程传递数组参数的问题, 浪费了N多个小时,终于有点头绪. 具体的代码就不写上了,因为项目中存储过程的调用方法全部是封装好的(好像现在都这样,都姓3层,嘿嘿) 原理: 1.一维数组 A.单纯的一维数组的话,直接建立一个table类型就可以 1 TYPE TYPE_VARCHAR AS TABLE OF VARCHAR2(200); 2.多维数组 A.多维数组就要稍加修改了,如

oracle 自定义类型 type / create type

一:Oracle中的类型有很多种,主要可以分为以下几类: 1.字符串类型.如:char.nchar.varchar2.nvarchar2. 2.数值类型.如:int.number(p,s).integer.smallint. 3.日期类型.如:date.interval.timestamp. 4.PL/SQL类型.如:pls_integer.binary_integer.binary_double(10g).binary_float(10g).boolean.plsql类型是不能在sql环境中使

oracle 数组 array

一维数组示例如下: -- Created on 2014-5-15 by ADMINISTRATOR DECLARE TYPE Arr1 IS VARRAY(10) OF NUMBER; Tab_1 Arr1; TYPE Arr2 IS TABLE OF NUMBER INDEX BY BINARY_INTEGER; Tab_2 Arr2; BEGIN -- Test statements here Tab_1 := Arr1(1, 3, 4, 6, 3, 2, 8, 5); FOR a IN

C++数组类型与函数类型

之所以将C++的数组类型与函数类型拿到一块说,是因为两者在很多地方都一样. 首先,声明形式上类似: 数组类型:  type [num]                                          数组:type name[num] 函数类型:  return_type (形参列表)    函数:return_type name(形参列表) 数组指针类型: type (*)[num] 数组指针:type (*name)[num] 函数指针类型: return_type (*)

使用typedef语句定义数组类型

使用typedef语句定义数组类型     1. 一维数组类型的定义格式 typedef <元素类型关键字><数组类型名>[<常量表达式>]; 例如: (1) typedef int vector[10]; (2) typedef char strings[80]; (3) typedef short int array[N]; 第一条语句定义了一个元素类型为int,含有10个元素的数组类型vector,若不使用typedef保留字,则就变成了数组定义,它只定义了一个元