Upload
arnold-reuser
View
1.898
Download
1
Tags:
Embed Size (px)
DESCRIPTION
How to introduce common generic collection types like lists, maps, sets, trees, graphs in PLSQL
Citation preview
Generic Collection Types v1.0
How to enrich the programmer's PLSQL toolkit
Arnold Reuser
Generic Collection Types v1.0
Agenda
Page 2
Serving a need
What Generic Collection Types can do for you
How you can make a difference
1
2
3
Generic Collection Types v1.0
Serving a need
PLSQL provides the collection types table and varray
- Collection types that allow you to declare index-by tables, nested tables and
variable-size arrays.
- Collection types that reflect a table like structure.
PLSQL does not provide generic collection types
- Collection types as lists, maps, sets, trees, graphs, …
- Collection types with a specialized purpose and their own unique strengths and
weaknesses
Page 3
Missing feature of PLSQL
Generic Collection Types v1.0
Serving a need
PLSQL types however can be used as building blocks
Building blocks to create generic collection types
Collection types as lists, maps, sets, trees, graphs, ….
Collection types that will enrich the PLSQL programmer's toolkit
Page 4
Missing feature of PLSQL
Generic Collection Types v1.0
Serving a need
A rich PLSQL programmer's toolkit will help shift the focus
Shift the focus from purely technical problems to business problems
Which will help the business generate more value
Page 5
Missing feature of PLSQL
Generic Collection Types v1.0
What Generic Collection Types can do for you
Current status
Practical applications
Page 6
Generic Collection Types v1.0 Page 7
Current Status
Collection Type Description
Collection collection of elements
List ordered collection of elements, permitting duplicates
Set collection of elements, forbids duplicates within the collection.
Map key to value pairs, without duplicate keys
Tree hierarchical collection of elements
Graph interconnected collection of elements
Generic Collection Types v1.0 Page 8
Current Status
Collection Type Available Type
Collection Collection
List List
Set
Map SimpleMap,SimpleHashMap,BaseMap
Tree
Graph Graph
Utility packages are introduced to extend the functionality of the available types.
Read the user guide for all the details on the utility packages.
Generic Collection Types v1.0
Practical Applications
Page 9
List is ordered collection of elements, permitting duplicates
Supported types are lists of strings, numbers, dates, …
Sneak preview of usage
list StringList := new StringList('FAX','WORK','HOME');
putil.extend(list,'MOBILE');
contains boolean := putil.contains(list,'MOBILE');
idx integer := putil.indexOf(list,'MOBILE');
list := putil.exclude(list,'MOBILE');
List is implemented as a nested table.
multiset operations are therefore available for usage
Generic Collection Types v1.0
Practical Applications
Page 10
SimpleMap is collection of key to value pairs, without duplicate keys.
Focus is on simplicity; both key and value are of type string
Sneak preview of usage
map StringList := StringList();
mapUtil.setString(map,'AMOUNT_TYPE','TOTAL_PARTS');
mapUtil.setString(map,'AMOUNT_UNIT','CURRENCY');
mapUtil.setString(map,'AMOUNT_VALUE','1469');
mapKeys varchars_t := mapUtil.keySet(map);
amountType varchar2(100) := mapUtil.getString(map,'AMOUNT_TYPE');
Generic Collection Types v1.0
Practical Applications
Page 11
SimpleHashMap is collection of key to value pairs, without duplicate keys.
Focus is on performance; both key and value are of type string
Sneak preview of usage
map StringMatrix := mapUtil.createHashMap(pp_nrOfBuckets => 10);
mapUtil.setString(map,'AMOUNT_TYPE','TOTAL_PARTS');
mapUtil.setString(map,'AMOUNT_UNIT','CURRENCY');
mapUtil.setString(map,'AMOUNT_VALUE','1469');
mapKeys varchars_t := mapUtil.keySet(map);
amountType varchar2(100) := mapUtil.getString(map,'AMOUNT_TYPE');
Generic Collection Types v1.0
Practical Applications
Page 12
BaseMap is collection of key to value pairs, without duplicate keys.
Focus is on extensive support for different key and value types
Sneak preview of usage
map BaseMap := mapUtil.createBaseMap();
mapUtil.setNumber(map,'CMCD_ID',1051);
mapUtil.setString(map,'CMCD_COMMUNICATION_CODE','[email protected]');
mapUtil.setDate(map,'CMCD_VALID_FROM',sysdate);
mapUtil.setString(map,'CMCT_DESCR','home_email');
mapUtil.setBoolean(map,'CMCT_IND_ACTIVE',true);
mapKeys StringList := mapUtil.keySet(map);
cmctDescr varchar2(100) := mapUtil.getString(map,'CMCT_DESCR');
Note there are other types BaseMap can support.
Read the user guide for more detail on this.
Generic Collection Types v1.0
Practical Applications
Graphs can be used to represent a dynamic hierarchical structure e.g. XML
Graphs can be used to define other generic types e.g. BaseMap
Graphs are used if no other data structure delivers a proper solution
Graphs provide extensive support for different value types
Graphs have their roots in discrete mathematics.
Page 13
Graph is an interconnected collection of elements.
How the elements of a Graph are connected is up to you.
If you really need a Graph. Read the user guide and code thoroughly.
Generic Collection Types v1.0
How you can make a difference
Give it a try
Be a happy user
Tell us and the whole wide world about it!
If you would like to get in touch.
Drop me a mail at [email protected]
Page 14
Generic Collection Types v1.0 Page 15
We would be happy to help.
Do You Have
Any Questions?