2. Agenda
1 Serving a need
2 What Generic Collection Types can do for you
3 How you can make a difference
Page 2 Generic Collection Types v1.0
3. Serving a need
Missing feature of PLSQL
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 Generic Collection Types v1.0
4. Serving a need
Missing feature of PLSQL
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 Generic Collection Types v1.0
5. Serving a need
Missing feature of PLSQL
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 Generic Collection Types v1.0
6. What Generic Collection Types can do for you
Current status
Practical applications
Page 6 Generic Collection Types v1.0
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
Page 7 Generic Collection Types v1.0
8. Current Status
Utility packages are introduced to extend the functionality of the available types.
Read the user guide for all the details on the utility packages.
Collection Type Available Type
Collection Collection
List List
Set
Map SimpleMap,SimpleHashMap,BaseMap
Tree
Graph Graph
Page 8 Generic Collection Types v1.0
9. Practical Applications
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
Page 9 Generic Collection Types v1.0
10. Practical Applications
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');
Page 10 Generic Collection Types v1.0
11. Practical Applications
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');
Page 11 Generic Collection Types v1.0
12. Practical Applications
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','arnold@reuser.info');
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.
Page 12 Generic Collection Types v1.0
13. Practical Applications
Graph is an interconnected collection of elements.
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.
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.
Page 13 Generic Collection Types v1.0
14. 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 arnold@reuser.info
Page 14 Generic Collection Types v1.0
15. Do You Have
Any Questions?
We would be happy to help.
Page 15 Generic Collection Types v1.0