Freitag, 1. November 2013

SQL dynamisch ausführen mit Bind Variablen

##################### Wert in Variable ##########################
 

PROCEDURE s_leseLetzteLfdNr ( p_i_tabelle IN VARCHAR2 )
/****************************************************************
 *  BESCHREIBUNG: Die ID des letzten Transfervorganges wird
 *  aus der Steuertabelle abgefragt.
 *
 *  PARAMETER:    p_i_tabelle IN          Tabelle, deren Daten
 *                                        transferiert werden.
 *
 *  FEHLER:        
 *                 
 *
 *  CHANGE HISTORY:
 *  Datum       Name            Beschreibung
 *  ----------  -------------- ----------------------------------
 *  ...
 **************************************************************/
IS
 
  sqlStr VARCHAR2(1000);
  g_offset NUMBER(30) := 1;

BEGIN
  -- Die letzte laufende Nummer aus der Remote-DB lesen
  --
und in der Konfigurationstabelle ablegen.
 
  sqlStr := 'SELECT max_id
               FROM remote_tabelle@remoteUser
              WHERE tabname = :get_table
                AND attribut = ''SPALTE''';
   
  DBMS_OUTPUT.PUT_LINE(sqlStr);
   
  EXECUTE immediate sqlStr INTO g_offset USING p_i_tabelle;
   
END s_leseLetzteLfdNr;



##################### Update in Tabelle ####################### 



PROCEDURE s_schreibeLetzteLfdNr ( p_i_tabelle IN VARCHAR2 )
/***************************************************************
 *  BESCHREIBUNG: Die ID des letzten Transfervorganges wird
 *  aus der Steuertabelle (remote_tabelle) abgefragt und in 
 *  der Konfigurationstabelle (config_table) festgehalten.
 *
 *  PARAMETER:    p_i_tabelle IN         
Tabelle, deren Daten
 *                                        transferiert werden.
 *
 *  FEHLER:        
 *                 
 *
 *  CHANGE HISTORY:
 *  Datum       Name            Beschreibung
 *  ----------  -------------- ------------------------------
 *  ...
 ************************************************************/
IS
 
  sqlStr VARCHAR2(1000);

BEGIN
  -- Die letzte laufende Nummer aus der Remote-DB lesen
  --
und in der Konfigurationstabelle ablegen.
 
    sqlStr := 'UPDATE config_table
                  SET max_id = (
                    SELECT max_id
                      FROM
remote_tabelle@remoteUser
                     WHERE tabname = :get_table
                        AND
attribut = ''SPALTE'')
                WHERE t_name = :get_table';
   
    DBMS_OUTPUT.PUT_LINE(sqlStr);

    EXECUTE immediate sqlStr USING p_i_tabelle, p_i_tabelle;

   
END s_schreibeLetzteLfdNr;



Keine Kommentare: