15
Generic Collection Types v1.0 How to enrich the programmer's PLSQL toolkit Arnold Reuser

Generic collection types in PLSQL

Embed Size (px)

DESCRIPTION

How to introduce common generic collection types like lists, maps, sets, trees, graphs in PLSQL

Citation preview

Page 1: Generic collection types in PLSQL

Generic Collection Types v1.0

How to enrich the programmer's PLSQL toolkit

Arnold Reuser

Page 2: Generic collection types in PLSQL

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

Page 3: Generic collection types in PLSQL

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

Page 4: Generic collection types in 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

Page 5: Generic collection types in 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

Page 6: Generic collection types in PLSQL

Generic Collection Types v1.0

What Generic Collection Types can do for you

Current status

Practical applications

Page 6

Page 7: Generic collection types in PLSQL

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

Page 8: Generic collection types in PLSQL

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.

Page 9: Generic collection types in PLSQL

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

Page 10: Generic collection types in PLSQL

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');

Page 11: Generic collection types in PLSQL

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');

Page 12: Generic collection types in PLSQL

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.

Page 13: Generic collection types in PLSQL

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.

Page 14: Generic collection types in PLSQL

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

Page 15: Generic collection types in PLSQL

Generic Collection Types v1.0 Page 15

We would be happy to help.

Do You Have

Any Questions?