Kategorie: PL/SQL
Komplette Tabellendefintion auslesen
Für Output in der DBMS-Ausgabe erzeugt der folgende Code die komplette Tabellendefinition inkl. Indizes, Kommentare und Grants: DECLAREddl CLOB;comments CLOB;grants CLOB;v_owner VARCHAR2(100) := ‚OWNER_HIER_EINSETZEN‘;v_table VARCHAR2(100) := ‚TABELLE_HIER_EINSETZEN‘;BEGINSELECT DBMS_METADATA.GET_DDL(‚TABLE‘, t.table_name, t.owner)INTO ddlFROM all_tables tWHERE owner = …
Weiterlesen »Ausdruck evaluieren in PL/SQL
ora-06502 bulk bind truncated bind
Eine Abfrage Kombination mit CASE, basierend auf einer listagg-Funktion hat in einer PL/SQL Funktion zum ORA-06502 geführt. Und das obwohl der gleiche Code in reinem SQL problemlos funktionierte. select case when anz_le = 0 then …
Weiterlesen »Parameterübergabe für execute immediate Variable
Man kann einem execute immediate -Statment noch Parameter mitgeben. Damit spart man sich u.U. die Maskierung der Hochkommas. Z.B.: v_sql := ‚insert into r3_tid_management ( destination ,trans_id ,status ) values ( :1, :2, :3 )‘; …
Weiterlesen »Komma-Separated list für IN-Klausel
Auf https://blogs.oracle.com/aramamoo/how-to-split-comma-separated-string-and-pass-to-in-clause-of-select-statement wird erklärt, wie man in einer WHERE … IN Klausel eine String-Variable nutzen kann. Ein noch besseres Beispiel funktioniert so: with test as (select ‚KART,KART-SPG,PAL‘ col from dual) select regexp_substr(col, ‚[^,]+‘, 1, level) …
Weiterlesen »Tablespace kalkulieren mit PL/SQL
function get_tablespace_tbl RETURN t_table IS l_table t_table := t_table (); BEGIN SELECT t_record (TABLE_SPACE, used_mb, free_mb, total_mb, max_mb, pct_free, max_pct_free) BULK COLLECT INTO l_table FROM ( SELECT fs.tablespace_name AS TABLE_SPACE, (DF.TOTALSPACE – FS.FREESPACE) as USED_MB, …
Weiterlesen »SQL für Informationen im CLOB Feld
Falls man nach Informationen in einem CLOB Feld sucht, funktioniert das nicht mit einer normalen WHERE-Klausel in Verbindung mit LIKE oder INSTR. Als Workaround kann man mit dbms_lob.substr gezielt Daten rauskopieren, z.B.: select * from …
Weiterlesen »Trace und TKProf
Um aufzudecken was innerhalb einer Session passiert, kann man sie „tracen“. Dazu gibt man folgende Kommandos auf der Befehlszeile in SQLPLUS ein: alter session set timed_statistics=true; Session wurde geändert alter session set events ‚10046 trace …
Weiterlesen »Tabellendefinition für eine Fremdtabelle im ODI Datenmodell
Die Tabellendefinition für eine Fremdtabelle im ODI Datenmodell findet man über das ODI Workrepository. Darin befindet sich die Tabelle SNP_COL. Über deren Spalte kann man sämtliche Tabellenfelder finden. Z.B.: select * from ODI_WORK_REPO_DEV_D.snp_col where I_TABLE …
Weiterlesen »