oracle数组类型简单实例介绍
本文章详细的介绍了关于oracle数组的各种操作,有需要的同学可以参考一下。
本文章详细的介绍了关于oracle数组的各种操作,有需要的同学可以参考一下。Oracle数组一般可以分为固定数组和可变数组
固定数组
代码如下 | 复制代码 |
declare type v_ar is varray(10) of varchar2(30); my_ar v_ar:=v_ar('g','m','d','龚','帅'); begin for i in 1..my_ar.count loop dbms_output.put_line(my_ar(i)); end loop; end; declare type v_ar is varray(10) of varchar2(30); my_ar v_ar:=v_ar('g','m','d','龚','帅'); begin for i in 1..my_ar.count loop dbms_output.put_line(my_ar(i)); end loop; end; --可变数组 --一维数组 declare type v_table is table of varchar2(30) index by binary_integer; --类型可以是前面的类型定义,index by binary_integer子句代表以符号整数为索引, --这样访问表类型变量中的数据方法就是“表变量名(索引符号整数)”。 my_table v_table; begin for i in 1..20 loop my_table(i):=i; dbms_output.put_line(my_table(i)); end loop; end; declare type v_table is table of varchar2(30) index by binary_integer; --类型可以是前面的类型定义,index by binary_integer子句代表以符号整数为索引, --这样访问表类型变量中的数据方法就是“表变量名(索引符号整数)”。 my_table v_table; begin for i in 1..20 loop my_table(i):=i; dbms_output.put_line(my_table(i)); end loop; end; --多维数组--多条记录 declare type v_table is table of t_user%rowtype index by binary_integer; my_table v_table; begin * bulk collect into my_table from t_user; for i in 1..my_table.count/10 --my_table.count/10取到的值为四舍五入值 loop dbms_output.put_line('suser--'||my_table(i).suser); dbms_output.put_line('name---'||my_table(i).name); dbms_output.put_line('sex----'||my_table(i).sex); end loop; end; declare type v_table is table of t_user%rowtype index by binary_integer; my_table v_table; begin select * bulk collect into my_table from t_user; for i in 1..my_table.count/10 --my_table.count/10取到的值为四舍五入值 loop dbms_output.put_line('suser--'||my_table(i).suser); dbms_output.put_line('name---'||my_table(i).name); dbms_output.put_line('sex----'||my_table(i).sex); end loop; end; 多维数组--单条记录 declare type v_table is table of t_user%rowtype index by binary_integer; my_table v_table; begin select * into my_table(9) from t_user where suser='admin'; --my_table(i) i可以为任意整数,但取值时必须保持以i一致; dbms_output.put_line('--suser--'||my_table(9).suser||'--name--'||my_table(9).name); end; declare type v_table is table of t_user%rowtype index by binary_integer; my_table v_table; begin select * into my_table(9) from t_user where suser='admin'; --my_table(i) i可以为任意整数,但取值时必须保持以i一致; dbms_output.put_line('--suser--'||my_table(9).suser||'--name--'||my_table(9).name); end; --自定义数组 create or replace type varray_list as varray(30) of varchar2(50); --使用自定义数组 create or replace procedure show_list(p_varlist in varray_list) is v_str varchar2(50); begin for i in 1..p_varlist.count loop v_str:=p_varlist(i); dbms_output.put_line('v_str='||v_str); dbms_output.put_line('p_varlist('||i||')='||p_varlist(i)); end loop; end; declare my_var varray_list:=varray_list('g','m','d','龚','帅'); begin show_list(my_var); end; |
实例
代码如下 | 复制代码 |
--固定数组 --可变数组 --可变数组取表 create or replace procedure proc_stock(n number) --用数组实现 4.813 1.953 2 --访问自定义表 |
关于ORACLE中的数组:记录同集合
集合可以有三种实现方式:
1 自定义一个TYPE使用VARRAY来得到一个数组但只能对基本类型定义如:
CREATE TYPE 类型名 AS VARRAY OF VARCHAR2(20);
1 自定义一个TYPE使用VARRAY来得到一个数组但只能对基本类型定义如:
CREATE TYPE 类型名 AS VARRAY(52) OF VARCHAR2(20);
不能使用如下:
CREATE TYPE 类型名 AS VARRAY(52) OF 表名%ROWTYPE;
注意:使用VARRAY时一定要先指定数组大小
不然搞创建数组类型
2 内嵌表如:
TYPE 类型名 IS TABLE OF 具体类型如:(表名%ROWTYPE);
内嵌表数组分二种:Index_by表同嵌套表如上的就是嵌套表而Index_by表只要在其尾回上 INDEX BY
BINARY_INTEGER就可以了
例子:
代码如下 | 复制代码 |
declare cursor cur_test is select id,mc from test; type t_test1 is table of varchar2(60) index by binary_integer; type t_test2 is table of test%rowtype index by binary_integer; var_test1 t_test1; var_test2 t_test2; var_new t_test2; begin SELECT id,mc INTO var_test2(0) FROM test WHERE id='111'; dbms_output.put_line('var_test2(0):'||var_test2(0).id||'---'||var_test2(0).mc); SELECT id,mc INTO var_test2(8) FROM test WHERE id='333'; dbms_output.put_line('var_test2(8):'||var_test2(8).id||'---'||var_test2(8).mc); var_new := var_test2; dbms_output.put_line('===== copy var_test2 to var_new ====='); dbms_output.put_line('var_new(0):'||var_new(0).id||'---'||var_new(0).mc); dbms_output.put_line('var_new(8):'||var_new(8).id||'---'||var_new(8).mc); end; =================================================================================== DECLARE TYPE t_test1 IS TABLE OF test.id%TYPE; TYPE t_test2 IS VARRAY (10) OF test.id%TYPE; var_test1 t_test1; var_test2 t_test2; begin --var_test1(1) := ('test1.1'); --没有初始化不能赋值 var_test1 := t_test1('test1.1','test1.2','test1.3'); dbms_output.put_line('var_test1: '||var_test1(1)||','||var_test1(2)||','||var_test1(3)); var_test2 := t_test2('test2.1','test2.2','test2.3'); dbms_output.put_line('var_test2: '||var_test2(1)||','||var_test2(2)||','||var_test2(3)); var_test1(2) := 'test1.2_update'; dbms_output.put_line('==== 修改了var_test1(2) ===='); dbms_output.put_line('var_test1: '||var_test1(1)||','||var_test1(2)||','||var_test1(3)); dbms_output.put_line(var_test1.next(3)); dbms_output.put_line('var_test2元素个数: '||var_test2.limit()); end; |
嵌套表的元素可以是集合,注意赋值的时候是varray_element.record_column := 的形式.
除了构造函数外,集合还有很多内建函数,按照面向对象编成的叫法称之为方法。
方法==========描述====================================================================使用限
制
COUNT=========返回集合中元素的个数
DELETE========删除集合中所有元素
DELETE(x)=====删除元素下标为x的元素===================================================对
VARRAY非法
DELETE(x,y)===删除元素下标从X到Y的元素================================================对
VARRAY非法
EXIST(x)======如果集合元素x已经初始化,则返回TRUE, 否则返回FALSE
EXTEND========在集合末尾添加一个元素==================================================对
Index_by非法
EXTEND(x)=====在集合末尾添加x个元素===================================================对
Index_by非法
EXTEND(x,n)===在集合末尾添加元素n的x个副本============================================对
Index_by非法
FIRST=========返回集合中的第一个元素的下标号,对于VARRAY集合始终返回1。
LAST==========返回集合中最后一个元素的下标号, 对于VARRAY返回值始终等于COUNT.
LIMIT=========返回VARRY集合的最大的元素个数
===========================================Index_by集合和嵌套表无用
NEXT(x)=======返回在第x个元素之后及紧挨着它的元素的值,如果x是最后一个元素,返回null.
PRIOR(x)======返回在第x个元素之前紧挨着它的元素的值,如果x是第一个元素,则返回null。
TRIM==========从集合末端开始删除一个元素==============================================对于
index_by不合法
TRIM(x)=======从集合末端开始删除x个元素===============================================对
index_by不合法
********************************************************************************************
记录可以定义为:
TYPE 类型名 IS RECORDER (具休类型)
也可用:变量名 表名%ROWTYPE
例子:
隐式定义记录中,我们不用描述记录的每一个域,在声明记录变量时使用%ROWTYPE命令定义与表,
视图,游标有相同结构的记录。
有一些PL/SQL指令在使用隐式定义记录时没有使用%ROWTYPE属性,比如游标FOR循环或中的:old
和:new记录
代码如下 | 复制代码 |
declare t_record1 test%rowtype; cursor cur_test(v_id in varchar2) is select id,mc from test where id t_record2 cur_test%rowtype; begin for row_test in cur_test('333') loop t_record1.id := row_test.id; t_record1.mc := row_test.mc; t_record2.id := row_test.id; t_record2.mc := row_test.id; dbms_output.put_line('t_record1:'||t_record1.id||'---'||t_record1.mc); dbms_output.put_line('t_record2:'||t_record2.id||'---'||t_record2.mc); dbms_output.put_line('row_test:'||row_test.id||'---'||row_test.mc); dbms_output.put_line('================loop '||cur_test%rowcount||' times.'); end loop; exception when others then dbms_output.put_line(sqlcode||sqlerrm); end; ====================================================================================== declare type t_record is record ( id test.id%type, mc test.mc%type ); var_record t_record; counter number default 0; begin for row_test in (select id,mc from test) loop counter := counter + 1; var_record.id := row_test.id; var_record.mc := row_test.mc; dbms_output.put_line('var_record:'||var_record.id||'---'||var_record.mc); dbms_output.put_line('row_test:'||row_test.id||'---'||row_test.mc); dbms_output.put_line('================loop '||counter||' times.'); end loop; exception when others then dbms_output.put_line(sqlcode||sqlerrm); end; |
三、综合实例BULK COLLECT的用法
代码如下 | 复制代码 |
*/ set serverout on |

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Es gibt zwei Arten von PHP-Arrays, nämlich: 1. Index-Array, der Index besteht aus Zahlen, standardmäßig beginnend bei 0, wobei jede Zahl der Position eines Array-Elements im Array entspricht. 2. Assoziatives Array, aus dem der Index besteht numerische Werte und Zeichen Es besteht aus einer Mischung von Zeichenfolgen. Wenn ein Schlüsselname in einem Array keine Zahl ist, ist das Array ein assoziatives Array.

Die Datentypen in PHP-Arrays sind in drei Kategorien unterteilt: Skalartyp, zusammengesetzter Typ und spezieller Typ. Die acht Unterkategorien sind: 1. boolescher Typ, boolescher Typ; 3. Gleitkommatyp; auch bekannt als „As double; 4. string, string; 6. object, object 8. NULL, empty null;

Methode zur Konvertierung in einen Array-Typ: 1. Fügen Sie den Zieltyp „(array)“ in Klammern vor der zu konvertierenden numerischen Variablen hinzu. Die Syntax lautet „(array)-Konvertierungsvariable“. 2. Verwenden Sie die Funktion settype(). Die Syntax lautet „settype(Konvertierungsvariable, „Array“)“.

Es gibt vier Arten von PHP-Arrays, nämlich: 1. Numerisches Index-Array, bei dem jedes Element einen ganzzahligen Index hat, beginnend bei 0 und aufsteigend. 2. Assoziatives Array, bei dem jedes Element einen String-Schlüssel hat; Array: Sie können mehrdimensionale Arrays jeder Ebene erstellen. 4. Array mit variablen Schlüsseln: Sie können Arrays von Schlüssel-Wert-Paaren dynamisch hinzufügen und löschen.

In Golang können die Datentypen von Funktionen in Strukturtypen und Array-Typen unterteilt werden. Zwischen diesen beiden Typen gibt es wichtige Unterschiede. In diesem Artikel werden ihre Unterschiede analysiert. 1. Strukturtyp Eine Struktur ist ein Datentyp, der aus einigen Feldern besteht. Diese Felder können von unterschiedlichem Typ, Basistyp oder anderen benutzerdefinierten Typen sein. Verwenden Sie in Golang das Schlüsselwort „struct“, um einen Strukturtyp zu definieren, und verwenden Sie dann den Typnamen, um eine Instanz der Struktur zu erstellen. Eine Struktur kann über die Punktnotation oder auf ihre Felder zugreifen

Welche Arten von Arrays gibt es in PHP7.0? Array ist ein sehr wichtiger Datentyp in PHP7.0. Es kann mehrere Werte speichern und auf diese Werte kann über einen Index oder einen Schlüssel zugegriffen werden. In PHP 7.0 sind Array-Typen sehr flexibel und können daher zur Lösung vieler verschiedener Programmierprobleme verwendet werden. In diesem Artikel stellen wir die Array-Typen in PHP7.0 und deren Verwendung vor. 1. Gewöhnliche Arrays Gewöhnliche Arrays sind einer der häufigsten Typen in PHP7.0. Es besteht aus einer geordneten Liste von Schlüssel-Wert-Paaren, wobei

Durchlauf- und Betriebsfähigkeiten von Array-Datentypen in PHP In PHP ist Array ein sehr häufig verwendeter Datentyp, der es uns ermöglicht, eine Gruppe verwandter Datenelemente in einer Variablen zu speichern. Mithilfe von Arrays können wir über Indizes oder zugehörige Schlüssel auf Daten im Array zugreifen und diese bearbeiten. In diesem Artikel werden Array-Traversal- und Manipulationstechniken in PHP vorgestellt und Beispielcode als Referenz bereitgestellt. Durchlaufen indizierter Arrays Indizierte Arrays sind der gebräuchlichste Array-Typ, der automatisch zugewiesene Zahlen als Indizes verwendet. Wir können for-Schleife oder fore verwenden

Frage: Schreiben Sie ein C-Programm, um den Array-Typ zu finden, der überprüft werden muss, um festzustellen, ob die Elemente in einem bestimmten Array gerade, ungerade oder beides sind. Lösung Der Benutzer muss ein Array von Ganzzahlen eingeben und dann den Typ des Arrays anzeigen. Beispiel 1 - Eingabe: 531, Ausgabe: ungerades Array. Beispiel 2 - Eingabe: 2468, Ausgabe: gerades Array. Beispiel 3 - Eingabe: 12345, Ausgabe: gemischtes Array. Der Algorithmus bezieht sich auf den unten angegebenen Algorithmus, um den vom Benutzer eingegebenen Array-Typ zu finden. Schritt 1: Lesen Sie die Größe des Arrays zur Laufzeit. Schritt 2: Array-Elemente eingeben. Schritt 3 − as
