在Oracle pl / sql中,有没有一种方法可以创建像java Hashmap这样的数据结构,它可以将记录类型作为值,将String作为索引。
例如;
type emp_rec_type is record (emp_id number,emp_salary number);
emp_rec emp_rec_type;
type emp_assoc_array is table of emp_rec_type indexed by varchar2(30);
emp_map emp_assoc_array;
我希望能够做到以下几点
emp_rec.emp_id := 1;
emp_rec.salary := 1000;
emp_map('Rohan') := emp_rec;
能做到吗?我不能使用嵌套表,因为我只能按整数对其进行索引。对于关联数组,我不能将对象类型用作属性。
也希望这样做而不必创建对象或架构数据类型。你能建议点什么吗?
在PL /
SQL中,您可以定义索引的关联数组VARCHAR2
(因为我认为10g):
SQL> DECLARE
2 TYPE map_varchar IS TABLE OF VARCHAR2(30) INDEX BY VARCHAR2(30);
3 l map_varchar;
4 BEGIN
5 l('A') := 'alpha';
6 l('B') := 'beta';
7 dbms_output.put_line(l('A'));
8 END;
9 /
alpha
在内部,我认为该结构更像是二叉树映射而不是哈希映射。
当然,您可以存储PL / SQL记录或SQL对象:
SQL> DECLARE
2 TYPE emp_rec_type IS RECORD (emp_id NUMBER,emp_salary NUMBER);
3 TYPE map_varchar IS TABLE OF emp_rec_type INDEX BY VARCHAR2(30);
4 l_emp emp_rec_type;
5 l_map map_varchar;
6 BEGIN
7 l_emp.emp_id := 1;
8 l_emp.emp_salary := 1000;
9 l_map('A') := l_emp;
10 -- you can also affect record values directly
11 l_map('B').emp_id := 2;
12 l_map('B').emp_salary := 2000;
13 dbms_output.put_line(l_map('A').emp_salary);
14 END;
15 /
1000
PL/SQL procedure successfully completed
主要内容:PL/SQL标量数据类型和子类型,PL/SQL数值数据类型和子类型,PL/SQL字符数据类型和子类型,PL/SQL布尔数据类型,PL/SQL日期时间和间隔类型,PL/SQL大对象(LOB)数据类型,PL/SQL用户定义的子类型,PL/SQL中的NULL在本章中,我们将讨论和学习PL/SQL中的数据类型。 PL/SQL变量,常量和参数必须具有有效的数据类型,它指定存储格式,约束和有效的值范围。本节将重点介绍和数据类型。其他两个数据类型(复合类型和引用类型)将在后面的章节中介绍。 标量(S
主要内容:1. 创建函数,2. 调用函数,3. PL/SQL递归函数在本章中,我们将讨论和学习PL/SQL中的函数。函数与过程(也叫程序)相同,只不过函数有返回一个值,而过程没有返回值。 因此,上一章中所有有关存储过程的内容也适用于函数。 1. 创建函数 使用语句创建独立函数。语句的简化语法如下: 其中, function-name是指定要创建的函数的名称。 [OR REPLACE]选项指示是否允许修改现有的函数。 可选参数列表包含参数的名称,模式和类型。 表示将
主要内容:创建Varray类型在本章中,我们将讨论学习PL/SQL中的数组。 PL/SQL编程语言提供了一种称为的数据结构,它可以存储相同类型的元素的固定大小顺序集合。用于存储有序的数据集合,但通常最好将数组视为相同类型变量的集合。 所有是由连续的内存位置组成。最低的地址对应于第一个元素,而最后一个元素的地址最高。参考以下图示 - 数组是集合类型数据的一部分,表示可变大小的数组。 我们将在后面的“PL/SQL集合”这一章中学习
问题内容: 我想创建一个SQL脚本,可以重新创建我已经拥有的数据库。我想重新创建内部没有数据的数据库。 那么sqlplus是否可以导出用户的数据库? 问题答案: 有两种基本方法。 首先是导出转储文件。可以使用Datapump实用程序: 了解更多。 Datapump是在Oracle10g中引入的。在数据库的早期版本中,我们可以使用EXP实用程序执行相同的操作。 要导入文件,我们使用匹配(或)实用程序
顺序结构 顺序栈(Sequence Stack) SqStack.cpp 顺序栈数据结构和图片 typedef struct { ElemType *elem; int top; int size; int increment; } SqStack; 队列(Sequence Queue) 队列数据结构 typedef struct { ElemType * elem; int fron
数据结构 Collection 和 Sequence Clojure 常用的数据结构有 List, Map, Vector, Set. 他们都属于 Collection, 之间的关系大致是这样: 属于 Clojure 当中实现的数据结构都是 Collection. 编码当中会遇到 Host 平台的数据类型, 不属于 Collection. 实现了 Collection 的接口的数据结构都支持这些函