The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Quiq::SqlPlus - Erzeuge Code für SQL*Plus

BASE CLASS

Quiq::Object

EXAMPLE

Der Aufruf

  my $script = Quiq::SqlPlus->script('test.sql',q|
          SELECT
              *
          FROM
              all_users
          ORDER BY
              username
          ;
      |,
      -before => q|
          SELECT
              SYSDATE AS t0
          FROM
              dual
          ;
      |,
      -after => q|
          SELECT
              SYSDATE AS t1
          FROM
              dual
          ;
      |,
      -author => 'Frank Seitz',
      -description => q|
          Dies ist ein Test-Skript.
      |,
  );

erzeugt

  -- NAME
  --     test.sql
  --
  -- DESCRIPTION
  --     Dies ist ein Test-Skript.
  --
  -- AUTHOR
  --     Frank Seitz
  
  COLUMN tempdatum NEW_VALUE startdatum NOPRINT
  
  SELECT
      TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') AS tempdatum
  FROM
      dual;
  
  SPOOL test.sql.&&startdatum..log
  
  SET ECHO ON
  SET FEEDBACK ON
  SET VERIFY OFF
  SET HEADING ON
  SET TAB OFF
  SET PAGESIZE 0
  SET TRIMSPOOL ON
  SET LINESIZE 10000
  SET SERVEROUTPUT ON SIZE 10000
  SET SQLBLANKLINES ON
  SET NULL '~'
  SET TIMING ON
  
  WHENEVER OSERROR EXIT FAILURE ROLLBACK
  WHENEVER SQLERROR EXIT FAILURE ROLLBACK
  
  ALTER SESSION SET NLS_NUMERIC_CHARACTERS=",.";
  ALTER SESSION set NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
  
  -- ZUSTAND ZUVOR
  
  SELECT
      SYSDATE AS t0
  FROM
      dual
  ;
  
  -- OPERATION
  
  SELECT
      *
  FROM
      all_users
  ORDER BY
      username
  ;
  
  -- ZUSTAND DANACH
  
  SELECT
      SYSDATE AS t1
  FROM
      dual
  ;
  
  ROLLBACK;
  
  EXIT
  
  -- eof

METHODS

Klassenmethoden

script() - Erzeuge SQL*Plus-Skript

Synopsis

  $script = $class->script($name,$sql,@opt);

Arguments

$name

Name des Skripts. Der Name wird in einen Kommentar an den Anfang des Skripts gesetzt und für die Benennung der Logdatei genutzt

  NAME-YYYYMMDDHHMMSS.log

wobei der Zeitanteil beim Aufruf des Skripts gesetzt wird.

$sql

Der SQL*Plus-Code, der in den Rumpf des Skripts eingesetzt wird.

Options

-author => $author

Name des Skript-Autors, z.B. "Frank Seitz".

-description => $description

Beschreibung des Skripts. Darf mehrzeilig sein.

-commit => $bool (Default: 0)

Wenn diese Option gesetzt ist, wird COMMIT ans Ende des Skripots gesetzt, sonst ROLLBACK.

-before => $sql

SQL*Plus-Code, der vor $sql ausgeführt wird.

-beforeAndAfter => $sql

SQL*Plus-Code, der vor und nach $sql ausgeführt wird.

-after => $sql

SQL*Plus-Code, der nach $sql ausgeführt wird.

VERSION

1.204

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2022 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.