set serveroutput on
--
DECLARE
CURSOR c_trig IS
SELECT table_name
FROM tabs
WHERE 1=1
AND table_name like 'T_%'
;
v_zaehler number;
BEGIN
FOR r IN c_trig
LOOP
-- execute immediate 'TRUNCATE TABLE '||r.table_name;
execute immediate 'select count(*) from ' || r.table_name into v_zaehler;
DBMS_OUTPUT.PUT_LINE(r.table_name || ' : ' || v_zaehler);
END LOOP;
END;
/
Dienstag, 16. Dezember 2014
Freitag, 28. November 2014
For-Cursor-Loop
DECLARE
v_aenderungszeitstempel TIMESTAMP(6);
BEGIN
FOR cur IN (select table_name
from tabs
where table_name like 'CT_%'
and table_name not like 'CT_D_%'
and table_name not like 'CT_PROT_%') LOOP
execute immediate 'SELECT max (aenderungszeitstempel) FROM ' || cur.table_name INTO v_aenderungszeitstempel;
DBMS_OUTPUT.put_line('max Aenderungszeitstempel der Tabelle ' || cur.table_name || ': ' || v_aenderungszeitstempel);
END LOOP;
END;
v_aenderungszeitstempel TIMESTAMP(6);
BEGIN
FOR cur IN (select table_name
from tabs
where table_name like 'CT_%'
and table_name not like 'CT_D_%'
and table_name not like 'CT_PROT_%') LOOP
execute immediate 'SELECT max (aenderungszeitstempel) FROM ' || cur.table_name INTO v_aenderungszeitstempel;
DBMS_OUTPUT.put_line('max Aenderungszeitstempel der Tabelle ' || cur.table_name || ': ' || v_aenderungszeitstempel);
END LOOP;
END;
einfache Queries
select table_name
from tabs
where table_name like 'T_%'
and table_name not like 'T_D_%'
and table_name not like 'T_PRO_%'
;
from tabs
where table_name like 'T_%'
and table_name not like 'T_D_%'
and table_name not like 'T_PRO_%'
;
Dienstag, 18. November 2014
Dynamisch SQL-Befehle generieren
select 'delete from ' || table_name || ';' from tabs;
select 'insert into ' || table_name || ' select * from ' || table_name || '@dwh;' from tabs;
select 'CREATE TABLE ' || table_name || '_S AS (SELECT * from ' || table_name || ');' from tabs;
select 'insert into ' || table_name || ' select * from ' || table_name || '@dwh;' from tabs;
select 'CREATE TABLE ' || table_name || '_S AS (SELECT * from ' || table_name || ');' from tabs;
Donnerstag, 24. Juli 2014
Parameterübergabe eines Perl-Scripts an SQL*Plus
/*************************************************
* Programm: start.pl
*************************************************/
sqlplus start.sql §Tabelle§
####################################################
/*************************************************
* Programm: start.sql
*************************************************/
PROMPT Aufruf eines SQL-Scripts mit Parameteruebergabe
exec sqlScript('&1');
exec sqlScript('&1');
####################################################
/*************************************************
* Programm: sqlScript.sql
*************************************************/
select * from &1;
####################################################
Dienstag, 1. April 2014
Funktionen
SELECT avg(sal) as Mittelwert FROM emp;
--> 2035
, count (e.ename)
FROM emp e
WHERE e.sal > 1000
GROUP BY (e.deptno)
;
--
SELECT e.deptno
, count (e.ename)
FROM emp e
WHERE e.sal > 1000
AND nvl(e.comm, 0) = 0
GROUP BY (e.deptno)
;
--> 2035
--
-- Ermittle die Anzahl aller MA pro
-- Abteilung, die mehr als 1000,-
-- erhalten.
--
SELECT e.deptno, count (e.ename)
FROM emp e
WHERE e.sal > 1000
GROUP BY (e.deptno)
;
--
-- Ermittle die Anzahl aller MA pro
-- Abteilung, die mehr als 1000,-
-- erhalten und keine Provision
-- bekommen.
--SELECT e.deptno
, count (e.ename)
FROM emp e
WHERE e.sal > 1000
AND nvl(e.comm, 0) = 0
GROUP BY (e.deptno)
;
Abonnieren
Kommentare (Atom)