Reader small image

You're reading from  Oracle Database 11gR2 Performance Tuning Cookbook

Product typeBook
Published inJan 2012
Reading LevelIntermediate
PublisherPackt
ISBN-139781849682602
Edition1st Edition
Languages
Right arrow
Author (1)
Ciro Fiorillo
Ciro Fiorillo
author image
Ciro Fiorillo

Ciro Fiorillo is an IT professional and consultant with experience of more than a decade in different roles (developer, analyst, DBA, project manager, data and software architect) among software industries. He has worked on different technologies and architectures, such as Oracle, SQL Server, Delphi, C# and .NET Framework, C/C++, Java, PHP, COBOL, Fortran, and Tibco. Ciro is currently employed as Lead Software and Data Architect with FinWin Srl, a software house specializing in banking and loans applications. As a freelancer he writes articles for websites and printed magazines about software and computing, participates in workshops, and teaches C++ and Fortran parallel programming with Intel Software tools. Ciro can be reached at ciro@cirofiorillo.com.
Read more about Ciro Fiorillo

Right arrow

Taking advantage of function result cache


In this recipe, we will see how to use the function result cache feature, available from Oracle 11g upwards, to enhance our function's performance.

How to do it...

The following steps will demonstrate the use of the functions result cache:

  1. Connect to the SH schema:

    CONNECT sh@TESTDB/sh
    
  2. Create the function C_N_K, which calculates the number of k-combinations in a set of n elements:

    CREATE OR REPLACE FUNCTION C_N_K (N IN NUMBER, K IN NUMBER)
      RETURN NUMBER
    IS
      N_FAT NUMBER := 1;
      K_FAT NUMBER := 1;
      N_K_FAT NUMBER := 1;
    BEGIN
      FOR J IN 1..N LOOP
        N_FAT := N_FAT * J;
      END LOOP;
      FOR J IN 1..K LOOP
        K_FAT := K_FAT * J;
      END LOOP;
      FOR J IN 1..(N - K) LOOP
        N_K_FAT := N_K_FAT * J;
      END LOOP;
      RETURN (N_FAT / (N_K_FAT * K_FAT));
    END;
    /
    
  3. Create a procedure with the name STRESS to test the function in a loop:

    CREATE OR REPLACE PROCEDURE STRESS(ANUM NUMBER)
    IS
      AVAL NUMBER;
    BEGIN
      FOR J IN 1..ANUM LOOP
        AVAL := C_N_K (50,10);
      END LOOP...
lock icon
The rest of the page is locked
Previous PageNext Page
You have been reading a chapter from
Oracle Database 11gR2 Performance Tuning Cookbook
Published in: Jan 2012Publisher: PacktISBN-13: 9781849682602

Author (1)

author image
Ciro Fiorillo

Ciro Fiorillo is an IT professional and consultant with experience of more than a decade in different roles (developer, analyst, DBA, project manager, data and software architect) among software industries. He has worked on different technologies and architectures, such as Oracle, SQL Server, Delphi, C# and .NET Framework, C/C++, Java, PHP, COBOL, Fortran, and Tibco. Ciro is currently employed as Lead Software and Data Architect with FinWin Srl, a software house specializing in banking and loans applications. As a freelancer he writes articles for websites and printed magazines about software and computing, participates in workshops, and teaches C++ and Fortran parallel programming with Intel Software tools. Ciro can be reached at ciro@cirofiorillo.com.
Read more about Ciro Fiorillo