SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

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
 

La actualidad más candente (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
 

Similar 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
 

Similar 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

TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 

Último (20)

TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 

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