SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
PLSQL Commons v1.0
How to enrich the programmer's PLSQL toolkit


Arnold Reuser
Agenda



  1        Serving a need

  2        What PLSQL Commons can do for you

  3        How you can make a difference




Page  2                      PLSQL Commons v1.0
Serving a need

Reusable PLSQL Components

 PLSQL Commons is a project focused on creating and maintaining
  reusable PLSQL components.
 Components that will enrich the PLSQL programmer's toolkit
 Components that promote the programmers shift from solving purely
  technical problems to actual business problems




Page  3                      PLSQL Commons v1.0
Serving a need

Reusable PLSQL Components

 PLSQL Commons is used by a CRM service provider of General Motors
  to handle their specific needs
 Used on their production Oracle database servers as the defacto standard
  components for the past three years




Page  4                       PLSQL Commons v1.0
What PLSQL Commons can do for you



 Current status
 Practical applications




Page  5                   PLSQL Commons v1.0
Current Status

There are several upcoming sandbox components not mentioned.
This presentation will focus on just a few components.

           Component      Focus
           plsql_async    Parallel processing of tasks

           plsql_cache    General purpose memory based caching

           plsql_error    Exception management

           plsql_file     Reading and writing operating system text files

           plsql_ftp      Copy a file from one host to another based on the ftp protocol.

           plsql_host     Executing a command in the host environment

           plsql_log      Logging application behavior

           plsql_match    Text search engine

           plsql_test     Writing repeatable unit tests

           plsql_timeit   Measuring the execution time of a program unit

           plsql_util     General purpose utilities

           plsql_soap     Lightweight webservices based on the soap protocol


Page  6                          PLSQL Commons v1.0
Practical Applications

Parallel processing of tasks




 Imagine a potential pipeline of an ETL process to load CRM data.
 The pipeline passes several processing elements.



Page  7                       PLSQL Commons v1.0
Practical Applications

Parallel processing of tasks




 If the elements Address and Communication are independent.
 The pipeline could be organized to process these elements in parallel



Page  8                       PLSQL Commons v1.0
Practical Applications

Parallel processing of tasks




 Fundamental questions :
   • How can you maintain the processing flow?
   • What if Address and Communication would like to pass their identifiers?



Page  9                           PLSQL Commons v1.0
Practical Applications

Parallel processing of tasks




 The answers provided :
   - plsql_async can be used to route and maintain the processing flow
   - plsql_async can be used to pass information between sequential processes
   - plsql_cache can be used to cache session and cross-session based information
 Read the user guide for more details on this.
 If your interest in building a processing flow. Read the book Enterprise Integration Patterns.

Page  10                                PLSQL Commons v1.0
Practical Applications

Exception management

    Assertion at any location you assume will not be reached.

  gender char(1) := 'A';
  plsql_test.assert(gender in ('M','F'),'Gender can be M or F; current value is {1}',varchars_t(gender));




    Error to identify an exceptional condition that an application might want to catch

 soapFaultReason varchar2(100) := ImportDataRecord has been invoked at an illegal or inappropriate time.';
 err.raise(err.SOAPFaultException,'operation raised exception : {1}',varchars_t(soapFaultReason));




Page  11                                             PLSQL Commons v1.0
Practical Applications

Testing application behavior

 plsql_test is a testing facility for the plsql programming
 plsql_test will help you :
   - measure your progress, spot unintended side effects, and focus your
     development efforts
   - without automated testing tools like this facility retesting can be a tedious and
     inaccurate process.
   - by allowing the testing process to occur frequently and automatically, you can
     keep software coding errors at a minimum




Page  12                             PLSQL Commons v1.0
Practical Applications

Testing application behavior

       Developing a test suite
 create package body test_plsql_util_pck
 as
      procedure t_varchars
      is
       vt1 varchars_t:= new varchars_t('A','B');
      begin
       plsql_test.assert(vt1.count = 2,'list contains only two elements');
      end;
      procedure t_isWhiteSpace
      is
           cause varchar2(2000) := 'incorrect implementation of contract';
      begin
           plsql_test.assert(putil.isWhiteSpace(' '),cause); -- a space is whitespace
           plsql_test.assert(not putil.isWhiteSpace(null),cause); -- null is not whitespace
           plsql_test.assert(not putil.isWhiteSpace(''),cause); -- empty string is not whitespace
      end;
 end;



  Each and every package can become a test suite.
           - Just add a few procedures with prefix t_ to turn it into a test suite.
           - Once that's done. It can be run as a test suite.

Page  13                                                                               PLSQL Commons v1.0
Practical Applications

Testing application behavior

      Running a test suite                      DBMS Output
                                              ===== Run Test Suite ====
 plsql_test.runTestSuite                      unit TST_PLSQL_UTIL_PCK.T_ISWHITESPACE succeeded
 ( module => 'test_plsql_util_pck             unit TST_PLSQL_UTIL_PCK.T_VARCHARS succeeded
 , runAll => true                             ===== Test Report =====
 );                                           Run 2 tests of which 2 succeeded and 0 failed




Page  14                           PLSQL Commons v1.0
Practical Applications

Logging application behavior

    Sneak Preview                                                        DBMS Output

                                                                       20110113-10:47:45.228 INFO   gender is M
 plog.turn_on;
 gender char(1) := 'M';
 plog.info('gender is {1}',varchars_t(gender));




  Logging supports
    - Different layout types : text, rich_text, custom
    - Different output types : dbms_pipe, dbms_output, http, table
    - Different levels of logging : trace, debug, info, info, warn, error, fatal

  Read the userguide for more details on this.

Page  15                                         PLSQL Commons v1.0
Practical Applications

Measuring application behavior

    Sneak Preview

 number idx;
 plsql_timeit.remove;
 plsql_timeit.start_watch(pp_context => 'assignment');
 idx := 1;
 plsql_timeit.stop_watch(pp_context => 'assignment');
 plog.info('took {1} millisec',varchars_t(mmit_plsql_timeit_pck.period(pp_context => 'assignment',pp_total => true));




  plsql_timeit is a facility to measure the execution time of a program unit
    - measure if the execution time of your code is fit for use

  plsql_timeit and plsql_test could be combined to introduce
   load, volume, overload and stress test functionality.


Page  16                                           PLSQL Commons v1.0
Practical Applications

General purpose utilities

    Sneak Preview

 var varchar2(200) := chr(10); -- new line
 isWhiteSpace boolean := putil.isWhiteSpace(var);
 plog.info(putil.toChar(isWhiteSpace));




  The standard libraries fail to provide enough general purpose methods.
  plsql_util provides these methods




Page  17                                           PLSQL Commons v1.0
Practical Applications

General purpose utilities

    Sneak Preview

 list StringList := new StringList('el2','el1');
 list := putil.sort(list);
 val varchar2(32767) := putil.join(list,'#');
 list := putil.split(val,'#');




  The standard libraries fail to provide enough general purpose methods.
  plsql_util provides these methods




Page  18                                          PLSQL Commons v1.0
Practical Applications

General purpose utilities

    Sneak Preview

 list StringList := new StringList('el2','el1');
 list := putil.sort(list);
 val varchar2(32767) := putil.join(list,'#');
 list := putil.split(val,'#');




  The standard libraries fail to provide enough general purpose methods.
  plsql_util provides these methods




Page  19                                          PLSQL Commons 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 arnold@reuser.info




Page  20                     PLSQL Commons v1.0
Do You Have
                Any Questions?
                We would be happy to help.




Page  21   PLSQL Commons v1.0

Mais conteúdo relacionado

Mais procurados

New Stuff in the Oracle PL/SQL Language
New Stuff in the Oracle PL/SQL LanguageNew Stuff in the Oracle PL/SQL Language
New Stuff in the Oracle PL/SQL LanguageSteven Feuerstein
 
Stored-Procedures-Presentation
Stored-Procedures-PresentationStored-Procedures-Presentation
Stored-Procedures-PresentationChuck Walker
 
Java 8 in Anger, Devoxx France
Java 8 in Anger, Devoxx FranceJava 8 in Anger, Devoxx France
Java 8 in Anger, Devoxx FranceTrisha Gee
 
Java features. Java 8, 9, 10, 11
Java features. Java 8, 9, 10, 11Java features. Java 8, 9, 10, 11
Java features. Java 8, 9, 10, 11Ivelin Yanev
 
Demystifying postgres logical replication percona live sc
Demystifying postgres logical replication percona live scDemystifying postgres logical replication percona live sc
Demystifying postgres logical replication percona live scEmanuel Calvo
 
Java Enterprise Edition Concurrency Misconceptions
Java Enterprise Edition Concurrency Misconceptions Java Enterprise Edition Concurrency Misconceptions
Java Enterprise Edition Concurrency Misconceptions Haim Yadid
 
Session 38 - Core Java (New Features) - Part 1
Session 38 - Core Java (New Features) - Part 1Session 38 - Core Java (New Features) - Part 1
Session 38 - Core Java (New Features) - Part 1PawanMM
 
Why & how to optimize sql server for performance from design to query
Why & how to optimize sql server for performance from design to queryWhy & how to optimize sql server for performance from design to query
Why & how to optimize sql server for performance from design to queryAntonios Chatzipavlis
 
Oracle’ın parallel execution yetenekleri ve performans
Oracle’ın parallel execution yetenekleri ve performansOracle’ın parallel execution yetenekleri ve performans
Oracle’ın parallel execution yetenekleri ve performansEmrah METE
 
Exploring plsql new features best practices september 2013
Exploring plsql new features best practices   september 2013Exploring plsql new features best practices   september 2013
Exploring plsql new features best practices september 2013Andrejs Vorobjovs
 
Stored procedures
Stored proceduresStored procedures
Stored proceduresMuksNoor
 
Module Owb External Execution
Module Owb External ExecutionModule Owb External Execution
Module Owb External ExecutionNicholas Goodman
 
Web application penetration using SQLMAP.
Web application penetration using SQLMAP.Web application penetration using SQLMAP.
Web application penetration using SQLMAP.asmitaanpat
 
Logical Replication in PostgreSQL - FLOSSUK 2016
Logical Replication in PostgreSQL - FLOSSUK 2016Logical Replication in PostgreSQL - FLOSSUK 2016
Logical Replication in PostgreSQL - FLOSSUK 2016Petr Jelinek
 
Presentación Oracle Database Migración consideraciones 10g/11g/12c
Presentación Oracle Database Migración consideraciones 10g/11g/12cPresentación Oracle Database Migración consideraciones 10g/11g/12c
Presentación Oracle Database Migración consideraciones 10g/11g/12cRonald Francisco Vargas Quesada
 

Mais procurados (20)

New Stuff in the Oracle PL/SQL Language
New Stuff in the Oracle PL/SQL LanguageNew Stuff in the Oracle PL/SQL Language
New Stuff in the Oracle PL/SQL Language
 
Store procedures
Store proceduresStore procedures
Store procedures
 
Stored-Procedures-Presentation
Stored-Procedures-PresentationStored-Procedures-Presentation
Stored-Procedures-Presentation
 
Java 8 in Anger, Devoxx France
Java 8 in Anger, Devoxx FranceJava 8 in Anger, Devoxx France
Java 8 in Anger, Devoxx France
 
Java features. Java 8, 9, 10, 11
Java features. Java 8, 9, 10, 11Java features. Java 8, 9, 10, 11
Java features. Java 8, 9, 10, 11
 
Database Testing
Database TestingDatabase Testing
Database Testing
 
Java 9 sneak peek
Java 9 sneak peekJava 9 sneak peek
Java 9 sneak peek
 
Demystifying postgres logical replication percona live sc
Demystifying postgres logical replication percona live scDemystifying postgres logical replication percona live sc
Demystifying postgres logical replication percona live sc
 
Java Enterprise Edition Concurrency Misconceptions
Java Enterprise Edition Concurrency Misconceptions Java Enterprise Edition Concurrency Misconceptions
Java Enterprise Edition Concurrency Misconceptions
 
Session 38 - Core Java (New Features) - Part 1
Session 38 - Core Java (New Features) - Part 1Session 38 - Core Java (New Features) - Part 1
Session 38 - Core Java (New Features) - Part 1
 
Why & how to optimize sql server for performance from design to query
Why & how to optimize sql server for performance from design to queryWhy & how to optimize sql server for performance from design to query
Why & how to optimize sql server for performance from design to query
 
Oracle’ın parallel execution yetenekleri ve performans
Oracle’ın parallel execution yetenekleri ve performansOracle’ın parallel execution yetenekleri ve performans
Oracle’ın parallel execution yetenekleri ve performans
 
Exploring plsql new features best practices september 2013
Exploring plsql new features best practices   september 2013Exploring plsql new features best practices   september 2013
Exploring plsql new features best practices september 2013
 
Javantura v3 - Going Reactive with RxJava – Hrvoje Crnjak
Javantura v3 - Going Reactive with RxJava – Hrvoje CrnjakJavantura v3 - Going Reactive with RxJava – Hrvoje Crnjak
Javantura v3 - Going Reactive with RxJava – Hrvoje Crnjak
 
Stored procedures
Stored proceduresStored procedures
Stored procedures
 
Akka http
Akka httpAkka http
Akka http
 
Module Owb External Execution
Module Owb External ExecutionModule Owb External Execution
Module Owb External Execution
 
Web application penetration using SQLMAP.
Web application penetration using SQLMAP.Web application penetration using SQLMAP.
Web application penetration using SQLMAP.
 
Logical Replication in PostgreSQL - FLOSSUK 2016
Logical Replication in PostgreSQL - FLOSSUK 2016Logical Replication in PostgreSQL - FLOSSUK 2016
Logical Replication in PostgreSQL - FLOSSUK 2016
 
Presentación Oracle Database Migración consideraciones 10g/11g/12c
Presentación Oracle Database Migración consideraciones 10g/11g/12cPresentación Oracle Database Migración consideraciones 10g/11g/12c
Presentación Oracle Database Migración consideraciones 10g/11g/12c
 

Semelhante a Plsql commons

An introduction to_rac_system_test_planning_methods
An introduction to_rac_system_test_planning_methodsAn introduction to_rac_system_test_planning_methods
An introduction to_rac_system_test_planning_methodsAjith Narayanan
 
Oracle real application clusters system tests with demo
Oracle real application clusters system tests with demoOracle real application clusters system tests with demo
Oracle real application clusters system tests with demoAjith Narayanan
 
Declarative benchmarking of cassandra and it's data models
Declarative benchmarking of cassandra and it's data modelsDeclarative benchmarking of cassandra and it's data models
Declarative benchmarking of cassandra and it's data modelsMonal Daxini
 
APAC ksqlDB Workshop
APAC ksqlDB WorkshopAPAC ksqlDB Workshop
APAC ksqlDB Workshopconfluent
 
Apache Flink Overview at SF Spark and Friends
Apache Flink Overview at SF Spark and FriendsApache Flink Overview at SF Spark and Friends
Apache Flink Overview at SF Spark and FriendsStephan Ewen
 
Training Slides: 153 - Working with the CLI
Training Slides: 153 - Working with the CLITraining Slides: 153 - Working with the CLI
Training Slides: 153 - Working with the CLIContinuent
 
AskTom: How to Make and Test Your Application "Oracle RAC Ready"?
AskTom: How to Make and Test Your Application "Oracle RAC Ready"?AskTom: How to Make and Test Your Application "Oracle RAC Ready"?
AskTom: How to Make and Test Your Application "Oracle RAC Ready"?Markus Michalewicz
 
20160609 nike techtalks reactive applications tools of the trade
20160609 nike techtalks reactive applications   tools of the trade20160609 nike techtalks reactive applications   tools of the trade
20160609 nike techtalks reactive applications tools of the tradeshinolajla
 
Scalable Applications with Scala
Scalable Applications with ScalaScalable Applications with Scala
Scalable Applications with ScalaNimrod Argov
 
LibOS as a regression test framework for Linux networking #netdev1.1
LibOS as a regression test framework for Linux networking #netdev1.1LibOS as a regression test framework for Linux networking #netdev1.1
LibOS as a regression test framework for Linux networking #netdev1.1Hajime Tazaki
 
Computing recommendations at extreme scale with Apache Flink @Buzzwords 2015
Computing recommendations at extreme scale with Apache Flink @Buzzwords 2015Computing recommendations at extreme scale with Apache Flink @Buzzwords 2015
Computing recommendations at extreme scale with Apache Flink @Buzzwords 2015Till Rohrmann
 
Automated Testing for SQL Injection Vulnerabilities: An Input Mutation Approach
Automated Testing for SQL Injection Vulnerabilities: An Input Mutation ApproachAutomated Testing for SQL Injection Vulnerabilities: An Input Mutation Approach
Automated Testing for SQL Injection Vulnerabilities: An Input Mutation ApproachLionel Briand
 
Performance measurement methodology — Maksym Pugach | Elixir Evening Club 3
Performance measurement methodology — Maksym Pugach | Elixir Evening Club 3Performance measurement methodology — Maksym Pugach | Elixir Evening Club 3
Performance measurement methodology — Maksym Pugach | Elixir Evening Club 3Elixir Club
 
Reactive programming with examples
Reactive programming with examplesReactive programming with examples
Reactive programming with examplesPeter Lawrey
 
Distributed Performance testing by funkload
Distributed Performance testing by funkloadDistributed Performance testing by funkload
Distributed Performance testing by funkloadAkhil Singh
 
Chapter 3.pptx Oracle SQL or local Android database setup SQL, SQL-Lite, codi...
Chapter 3.pptx Oracle SQL or local Android database setup SQL, SQL-Lite, codi...Chapter 3.pptx Oracle SQL or local Android database setup SQL, SQL-Lite, codi...
Chapter 3.pptx Oracle SQL or local Android database setup SQL, SQL-Lite, codi...TAISEEREISA
 

Semelhante a Plsql commons (20)

An introduction to_rac_system_test_planning_methods
An introduction to_rac_system_test_planning_methodsAn introduction to_rac_system_test_planning_methods
An introduction to_rac_system_test_planning_methods
 
Oracle real application clusters system tests with demo
Oracle real application clusters system tests with demoOracle real application clusters system tests with demo
Oracle real application clusters system tests with demo
 
Using AWR for SQL Analysis
Using AWR for SQL AnalysisUsing AWR for SQL Analysis
Using AWR for SQL Analysis
 
Declarative benchmarking of cassandra and it's data models
Declarative benchmarking of cassandra and it's data modelsDeclarative benchmarking of cassandra and it's data models
Declarative benchmarking of cassandra and it's data models
 
APAC ksqlDB Workshop
APAC ksqlDB WorkshopAPAC ksqlDB Workshop
APAC ksqlDB Workshop
 
Apache Flink Overview at SF Spark and Friends
Apache Flink Overview at SF Spark and FriendsApache Flink Overview at SF Spark and Friends
Apache Flink Overview at SF Spark and Friends
 
Training Slides: 153 - Working with the CLI
Training Slides: 153 - Working with the CLITraining Slides: 153 - Working with the CLI
Training Slides: 153 - Working with the CLI
 
AskTom: How to Make and Test Your Application "Oracle RAC Ready"?
AskTom: How to Make and Test Your Application "Oracle RAC Ready"?AskTom: How to Make and Test Your Application "Oracle RAC Ready"?
AskTom: How to Make and Test Your Application "Oracle RAC Ready"?
 
Java 8 Overview
Java 8 OverviewJava 8 Overview
Java 8 Overview
 
20160609 nike techtalks reactive applications tools of the trade
20160609 nike techtalks reactive applications   tools of the trade20160609 nike techtalks reactive applications   tools of the trade
20160609 nike techtalks reactive applications tools of the trade
 
Ikc 2015
Ikc 2015Ikc 2015
Ikc 2015
 
Scalable Applications with Scala
Scalable Applications with ScalaScalable Applications with Scala
Scalable Applications with Scala
 
Laravel tips-2019-04
Laravel tips-2019-04Laravel tips-2019-04
Laravel tips-2019-04
 
LibOS as a regression test framework for Linux networking #netdev1.1
LibOS as a regression test framework for Linux networking #netdev1.1LibOS as a regression test framework for Linux networking #netdev1.1
LibOS as a regression test framework for Linux networking #netdev1.1
 
Computing recommendations at extreme scale with Apache Flink @Buzzwords 2015
Computing recommendations at extreme scale with Apache Flink @Buzzwords 2015Computing recommendations at extreme scale with Apache Flink @Buzzwords 2015
Computing recommendations at extreme scale with Apache Flink @Buzzwords 2015
 
Automated Testing for SQL Injection Vulnerabilities: An Input Mutation Approach
Automated Testing for SQL Injection Vulnerabilities: An Input Mutation ApproachAutomated Testing for SQL Injection Vulnerabilities: An Input Mutation Approach
Automated Testing for SQL Injection Vulnerabilities: An Input Mutation Approach
 
Performance measurement methodology — Maksym Pugach | Elixir Evening Club 3
Performance measurement methodology — Maksym Pugach | Elixir Evening Club 3Performance measurement methodology — Maksym Pugach | Elixir Evening Club 3
Performance measurement methodology — Maksym Pugach | Elixir Evening Club 3
 
Reactive programming with examples
Reactive programming with examplesReactive programming with examples
Reactive programming with examples
 
Distributed Performance testing by funkload
Distributed Performance testing by funkloadDistributed Performance testing by funkload
Distributed Performance testing by funkload
 
Chapter 3.pptx Oracle SQL or local Android database setup SQL, SQL-Lite, codi...
Chapter 3.pptx Oracle SQL or local Android database setup SQL, SQL-Lite, codi...Chapter 3.pptx Oracle SQL or local Android database setup SQL, SQL-Lite, codi...
Chapter 3.pptx Oracle SQL or local Android database setup SQL, SQL-Lite, codi...
 

Último

Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 

Último (20)

Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 

Plsql commons

  • 1. PLSQL Commons v1.0 How to enrich the programmer's PLSQL toolkit Arnold Reuser
  • 2. Agenda 1 Serving a need 2 What PLSQL Commons can do for you 3 How you can make a difference Page  2 PLSQL Commons v1.0
  • 3. Serving a need Reusable PLSQL Components  PLSQL Commons is a project focused on creating and maintaining reusable PLSQL components.  Components that will enrich the PLSQL programmer's toolkit  Components that promote the programmers shift from solving purely technical problems to actual business problems Page  3 PLSQL Commons v1.0
  • 4. Serving a need Reusable PLSQL Components  PLSQL Commons is used by a CRM service provider of General Motors to handle their specific needs  Used on their production Oracle database servers as the defacto standard components for the past three years Page  4 PLSQL Commons v1.0
  • 5. What PLSQL Commons can do for you  Current status  Practical applications Page  5 PLSQL Commons v1.0
  • 6. Current Status There are several upcoming sandbox components not mentioned. This presentation will focus on just a few components. Component Focus plsql_async Parallel processing of tasks plsql_cache General purpose memory based caching plsql_error Exception management plsql_file Reading and writing operating system text files plsql_ftp Copy a file from one host to another based on the ftp protocol. plsql_host Executing a command in the host environment plsql_log Logging application behavior plsql_match Text search engine plsql_test Writing repeatable unit tests plsql_timeit Measuring the execution time of a program unit plsql_util General purpose utilities plsql_soap Lightweight webservices based on the soap protocol Page  6 PLSQL Commons v1.0
  • 7. Practical Applications Parallel processing of tasks  Imagine a potential pipeline of an ETL process to load CRM data.  The pipeline passes several processing elements. Page  7 PLSQL Commons v1.0
  • 8. Practical Applications Parallel processing of tasks  If the elements Address and Communication are independent.  The pipeline could be organized to process these elements in parallel Page  8 PLSQL Commons v1.0
  • 9. Practical Applications Parallel processing of tasks  Fundamental questions : • How can you maintain the processing flow? • What if Address and Communication would like to pass their identifiers? Page  9 PLSQL Commons v1.0
  • 10. Practical Applications Parallel processing of tasks  The answers provided : - plsql_async can be used to route and maintain the processing flow - plsql_async can be used to pass information between sequential processes - plsql_cache can be used to cache session and cross-session based information  Read the user guide for more details on this.  If your interest in building a processing flow. Read the book Enterprise Integration Patterns. Page  10 PLSQL Commons v1.0
  • 11. Practical Applications Exception management Assertion at any location you assume will not be reached. gender char(1) := 'A'; plsql_test.assert(gender in ('M','F'),'Gender can be M or F; current value is {1}',varchars_t(gender)); Error to identify an exceptional condition that an application might want to catch soapFaultReason varchar2(100) := ImportDataRecord has been invoked at an illegal or inappropriate time.'; err.raise(err.SOAPFaultException,'operation raised exception : {1}',varchars_t(soapFaultReason)); Page  11 PLSQL Commons v1.0
  • 12. Practical Applications Testing application behavior  plsql_test is a testing facility for the plsql programming  plsql_test will help you : - measure your progress, spot unintended side effects, and focus your development efforts - without automated testing tools like this facility retesting can be a tedious and inaccurate process. - by allowing the testing process to occur frequently and automatically, you can keep software coding errors at a minimum Page  12 PLSQL Commons v1.0
  • 13. Practical Applications Testing application behavior Developing a test suite create package body test_plsql_util_pck as procedure t_varchars is vt1 varchars_t:= new varchars_t('A','B'); begin plsql_test.assert(vt1.count = 2,'list contains only two elements'); end; procedure t_isWhiteSpace is cause varchar2(2000) := 'incorrect implementation of contract'; begin plsql_test.assert(putil.isWhiteSpace(' '),cause); -- a space is whitespace plsql_test.assert(not putil.isWhiteSpace(null),cause); -- null is not whitespace plsql_test.assert(not putil.isWhiteSpace(''),cause); -- empty string is not whitespace end; end;  Each and every package can become a test suite. - Just add a few procedures with prefix t_ to turn it into a test suite. - Once that's done. It can be run as a test suite. Page  13 PLSQL Commons v1.0
  • 14. Practical Applications Testing application behavior Running a test suite DBMS Output ===== Run Test Suite ==== plsql_test.runTestSuite unit TST_PLSQL_UTIL_PCK.T_ISWHITESPACE succeeded ( module => 'test_plsql_util_pck unit TST_PLSQL_UTIL_PCK.T_VARCHARS succeeded , runAll => true ===== Test Report ===== ); Run 2 tests of which 2 succeeded and 0 failed Page  14 PLSQL Commons v1.0
  • 15. Practical Applications Logging application behavior Sneak Preview DBMS Output 20110113-10:47:45.228 INFO gender is M plog.turn_on; gender char(1) := 'M'; plog.info('gender is {1}',varchars_t(gender));  Logging supports - Different layout types : text, rich_text, custom - Different output types : dbms_pipe, dbms_output, http, table - Different levels of logging : trace, debug, info, info, warn, error, fatal  Read the userguide for more details on this. Page  15 PLSQL Commons v1.0
  • 16. Practical Applications Measuring application behavior Sneak Preview number idx; plsql_timeit.remove; plsql_timeit.start_watch(pp_context => 'assignment'); idx := 1; plsql_timeit.stop_watch(pp_context => 'assignment'); plog.info('took {1} millisec',varchars_t(mmit_plsql_timeit_pck.period(pp_context => 'assignment',pp_total => true));  plsql_timeit is a facility to measure the execution time of a program unit - measure if the execution time of your code is fit for use  plsql_timeit and plsql_test could be combined to introduce load, volume, overload and stress test functionality. Page  16 PLSQL Commons v1.0
  • 17. Practical Applications General purpose utilities Sneak Preview var varchar2(200) := chr(10); -- new line isWhiteSpace boolean := putil.isWhiteSpace(var); plog.info(putil.toChar(isWhiteSpace));  The standard libraries fail to provide enough general purpose methods.  plsql_util provides these methods Page  17 PLSQL Commons v1.0
  • 18. Practical Applications General purpose utilities Sneak Preview list StringList := new StringList('el2','el1'); list := putil.sort(list); val varchar2(32767) := putil.join(list,'#'); list := putil.split(val,'#');  The standard libraries fail to provide enough general purpose methods.  plsql_util provides these methods Page  18 PLSQL Commons v1.0
  • 19. Practical Applications General purpose utilities Sneak Preview list StringList := new StringList('el2','el1'); list := putil.sort(list); val varchar2(32767) := putil.join(list,'#'); list := putil.split(val,'#');  The standard libraries fail to provide enough general purpose methods.  plsql_util provides these methods Page  19 PLSQL Commons v1.0
  • 20. 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  20 PLSQL Commons v1.0
  • 21. Do You Have Any Questions? We would be happy to help. Page  21 PLSQL Commons v1.0