DECLARE
p_EMPNO number(4) := 0;
p_ENAME varchar2(10) := 'Test';
p_AENDERUNGSZEITSTEMPEL timestamp(6) := sysdate;
p_AENDERUNGSKENNZEICHEN varchar2(2) := 'I';
BEGIN
FOR i IN 1 .. 100 LOOP
p_EMPNO := p_EMPNO + 1;
INSERT
INTO CT_EMP1
(
EMPNO,
ENAME,
AENDERUNGSZEITSTEMPEL,
AENDERUNGS_KENNZEICHEN
)
VALUES
(
p_EMPNO,
p_ENAME,
p_AENDERUNGSZEITSTEMPEL,
p_AENDERUNGSKENNZEICHEN
);
END LOOP for_loop;
COMMIT;
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
raise_application_error (-20001,'Fehler beim Insert durch Schluesselverletzung.');
WHEN OTHERS THEN
dbms_output.put_line('Fehler beim Ausfuehren des Kommandos.');
RAISE;
END;
Hier ein weiterer Link zur automatischen Testdatengenerierung:
https://www.besserdich.com/oracle/scripting/testdatengenerierung-zeilen-generator-row-generator-in-oracle/
Donnerstag, 10. September 2015
Donnerstag, 26. März 2015
Dynamisch mit dem DBMS_SQL-Package
DECLARE
--
v_Cursor NUMBER;
v_CmdString VARCHAR2(5000);
v_Ret INTEGER;
--
BEGIN
--
v_Cursor := DBMS_SQL.OPEN_CURSOR;
v_CmdString := 'rename EMP to emp_tmp';
DBMS_SQL.PARSE(v_Cursor, v_CmdString, DBMS_SQL.NATIVE);
v_Ret := DBMS_SQL.EXECUTE(v_Cursor);
DBMS_SQL.CLOSE_CURSOR(v_Cursor);
EXCEPTION
WHEN OTHERS THEN
DBMS_SQL.CLOSE_CURSOR(v_Cursor);
DBMS_OUTPUT.PUT_LINE('Fehler beim Ausfuehren des Kommandos');
RAISE;
--
END;
/
http://www.java2s.com/Tutorial/Oracle/0601__System-Packages/AnexampleofusingDBMSSQLOPENCURSOR.htm
http://www.java2s.com/Code/Oracle/System-Packages/FirstDBMSSQLExample.htm
http://docstore.mik.ua/orelly/oracle/bipack/ch02_05.htm
http://psoug.org/reference/dbms_sql.html
--
v_Cursor NUMBER;
v_CmdString VARCHAR2(5000);
v_Ret INTEGER;
--
BEGIN
--
v_Cursor := DBMS_SQL.OPEN_CURSOR;
v_CmdString := 'rename EMP to emp_tmp';
DBMS_SQL.PARSE(v_Cursor, v_CmdString, DBMS_SQL.NATIVE);
v_Ret := DBMS_SQL.EXECUTE(v_Cursor);
DBMS_SQL.CLOSE_CURSOR(v_Cursor);
EXCEPTION
WHEN OTHERS THEN
DBMS_SQL.CLOSE_CURSOR(v_Cursor);
DBMS_OUTPUT.PUT_LINE('Fehler beim Ausfuehren des Kommandos');
RAISE;
--
END;
/
Links
http://www.toadworld.com/products/toad-for-oracle/w/toad_for_oracle_wiki/231.dbms-sql-vs-execute-immediate.aspxhttp://www.java2s.com/Tutorial/Oracle/0601__System-Packages/AnexampleofusingDBMSSQLOPENCURSOR.htm
http://www.java2s.com/Code/Oracle/System-Packages/FirstDBMSSQLExample.htm
http://docstore.mik.ua/orelly/oracle/bipack/ch02_05.htm
http://psoug.org/reference/dbms_sql.html
Mittwoch, 25. März 2015
SQL mal wieder ein wenig dynamischer
declare
procedure run(p_sql varchar2) as
begin
execute immediate p_sql;
end;
begin
run('rename EMP to emp_tmp');
run('rename emp_tmp to emp');
end;
http://www.insidesql.org/blogs/frankkalis/2004/07/16/dynamisches-sql-fluch-und-segen
procedure run(p_sql varchar2) as
begin
execute immediate p_sql;
end;
begin
run('rename EMP to emp_tmp');
run('rename emp_tmp to emp');
end;
Dazu noch ein paar nützliche Informationen:
http://use-the-index-luke.com/de/sql/mythen/dynamisches-sql-ist-langsamhttp://www.insidesql.org/blogs/frankkalis/2004/07/16/dynamisches-sql-fluch-und-segen
Dienstag, 3. März 2015
Join über vier Tabellen
Dieses Beispiel beruht auf dem SQL - Wikipedia ER-Diagramm:
http://de.wikipedia.org/wiki/SQL#Sprachelemente_und_Beispiele
Um anzuzeigen, welche Vorlesungen die Studenten besuchen und deren zugeordnete Professoren, kann diese Abfrage verwendet werden:
select s.matrnr
, s.name
, v.vorlnr
, v.titel
, p.persnr
, p.name
from Student s, hoert h, Vorlesung v, Professor p
where s.matrnr = h.matrnr
and h.vorlnr = v.vorlnr
and v.persnr = p.persnr
order by 2
MATRNR NAME VORLNR TITEL PERSNR NAME
26120 Fichte 5001 ET 15 Tesla
26120 Fichte 5045 DB 12 Wirth
25403 Jonas 5001 ET 15 Tesla
http://www.dba-oracle.com/tips_oracle_left_outer_join.htm
http://de.wikipedia.org/wiki/SQL#Sprachelemente_und_Beispiele
Um anzuzeigen, welche Vorlesungen die Studenten besuchen und deren zugeordnete Professoren, kann diese Abfrage verwendet werden:
select s.matrnr
, s.name
, v.vorlnr
, v.titel
, p.persnr
, p.name
from Student s, hoert h, Vorlesung v, Professor p
where s.matrnr = h.matrnr
and h.vorlnr = v.vorlnr
and v.persnr = p.persnr
order by 2
MATRNR NAME VORLNR TITEL PERSNR NAME
26120 Fichte 5001 ET 15 Tesla
26120 Fichte 5045 DB 12 Wirth
25403 Jonas 5001 ET 15 Tesla
Hier noch ein Beispiel zum Left Outer Join (wg. BURLESON Consulting):
http://www.dba-oracle.com/tips_oracle_left_outer_join.htm
Abonnieren
Kommentare (Atom)