Zum Inhalt springen

yallayalla

Mitglieder
  • Gesamte Inhalte

    77
  • Benutzer seit

  • Letzter Besuch

Beiträge von yallayalla

  1. Hallo!

    Ich habe ein Package geschrieben und es enthält einzelne Proceduren.

    Nun will ich eine Procedur vor alle anderen setzen, die dann alle anderen Proceduren abarbeitet:

    Create Package as...

    Create Package Body as

    Procedure START

    as

    Begin

    -- HIER SOLLEN jetzt die Proceduren 1-3 aufgerufen werden, aber wie?

    end;

    Procedure1

    Procedure2

    Procedure3

    danke.

    mfg

    yallayalla

  2. Hallo!

    Wir reden aneinander vorbei...glaube ich!

    Loop

    SELECT * FROM (SELECT NAME FROM tabelle WHERE ID=v_id);

    v_id:=v_id+1

    end loop

    Ich will nacheinander jede Tabelle als ganzes selektieren. Es geht nicht ums zaehlen!

    Jede Tabelle soll nacheinander angezeigt werden.

    Gruss

    yallayalla

  3. Hallo!

    Meine Tabelle, die die Namen von Tabellen vorhaelt, hat ID's:

    Tabelle:

    ID Name

    1 TAB1

    2 TAB2

    3 ....

    SELECT NAME FROM tabelle WHERE ID=1

    sollte dann TAB1 liefern.

    Und dann soll quasi

    SELECT * from TAB1

    ausgeführt werden

    Und ich brauche das so verschachtelt, weil ich in einer Schleife die ID's hochzaehlen muss/will/darf.

    mfg

    yallayalla

  4. Hallo!

    SELECT * FROM (SELECT NAME FROM tabelle WHERE ID=1);

    Unterselect:

    SELECT NAME FROM tabelle WHERE ID=1

    Liefert Tabelle1 (also nur den Namen der Tabelle) aus der Liste der Tabellen (und zwar die mit ID=1)

    Und dann soll Quasi

    SELECT * from Tabelle1

    --> Liefert die Komplette Tabelle1 (also alle Zeilen und Spalten).

    Das ist der Unterschied! Danke schonmal für die Hilfe!

    Gruss

    yallayalla

  5. Hallo!

    SELECT * FROM (SELECT NAME FROM tabelle WHERE ID=1);

    Also ich will das eigentlich so:

    Der Unterselect:

    SELECT NAME FROM tabelle WHERE ID=1

    Liefert ne Tabelle1

    Und dann soll Quasi

    SELECT * from Tabelle1

    --> Liefert die Komplette Tabelle1.

    gemacht werden. Oder ist das nicht machbar, das das Ergebnis des Unterselects im übergeordneten Select benutzt wird?

    mfg

    yallayalla

  6. Hallo!

    Mein Select zickt:

    SELECT * FROM (SELECT NAME FROM tabelle WHERE ID=1);

    Liefert mir aber nur den eintrag mit der ID 1 aus der Tabelle 'tabelle'.

    Testtabelle1

    Sollte nicht der Select * über das Ergbnis des zweiten Selects die komplette Tabelle liefern?

    Oder wird das nicht so ausgeführt? Sollte doch das gleiche machen wie:

    SELECT * FROM Testtabelle1;

    oder?

    mfg

    yallayalla

  7. Hallo!

    Die Sache ist das ich den INSERT INTO Befehl (also das SQL-Statement) haben will! Nicht, um es auszuführen, sondern um es abzuspeichern.

    Vielleicht habe ich nicht klar definiert, was ich will. Ziel ist bei mir, das ich ein komplettes INSERT INTO Statement habe, das ich dann theoretisch von einem beliebigen SQL-Worksheet aus an eine DB senden kann.

    Danke für die Hilfe.

    mfg

    yallayalla

  8. Hallo!

    So einfach ist das nicht!

    Bei einem Select (=Tabellenliste) wird dann jede Tabelle genommen, deren Spalten gezählt.

    Dann wird für jede Spalte eine Variable aus dem Array genommen, damit ich dann über einen Cursor den Spaltenwert einer jeden Zeile in eine eigen Variable schreiben kann um dann daraus einen "INSERT INTO" Befehl daraus zu generieren.

    mfg

    yallayalla

  9. Hallo!

    Kann ich in einer Procedur (also nach BEGIN) einen Cursor deklarieren?

    Problem:

    Der Cursor:

    cursor cu_insert2 is select * from v_table_name ;

    bezieht sich auf die Variable v_table_name , die aber erst von einem Cursor, der vorher läuft mit einem Wert gefüllt wird.

    Kann ich alsi nach BEGIN und dem FETCH des anderen Cursors den 2. Cursor, der ja ne Variable benutzt, nutzen?

    mfg

    yallayalla

  10. Hallo!

    Joo, Cursor kenne ich :-)

    Sache ist die:

    Cursor 1: Select Liste von Tabellen

    Select Anzahl Spalten der 1 tabelle von Cursor1

    Dann sollen die Elemente jeder Zeile in einzelne Variablen geschrieben werden.

    Ok, das geht mit nem Cursor, ABER:

    Die Tabellen sind nicht alle gleich aufgebaut!

    Was will ich machen:

    1. Cursor soll Liste der Tabellen, die Bedingung X erfüllen, durchgehen.

    2. Select coutn über all_tables liefert mir die Spaltenanzahl in eine Variable

    3. Jede Zeile der Tabelle soll spalte für Spalte in eine Variable geschrieben werden. Schleife.

    4. Aus den Variablen soll dann über eine weitere Schleife der INSERT INTO Befehl zum Schreiben der Inhalte generiert werden.

    1,2,4 ist nicht das Prob!

    3 schon, da ich mal 3, mal 15 Spalten haben kann...Mit nem Array könnte ich halt easy die entsprechende menge variablen vorhalten, die ich brauche....

    mfg

    yallayalla

  11. Hallo!

    naja, ich brauche das Array, da ich im vorhinein nicht weiss, wieviele Daten mir ein bestimmter Select zurueckliefert.

    allerdings brauche ich die einzelnen Elemente des Selects und zwar so, das ich sie einzeln ansprechen kann.

    Einzige andere Idee waere, so 100 Dummyvariablen zu nehmen (quasi ein aufgelöstes Array). Aber prinzipiell kann ich doch ein Array benutzen, oder?

    mfg

    yallayalla

  12. Hallo!

    Danke für den Beispielcode, habe es gestern abned mit .write und writeappend auch soweit hinbekommen.

    Wie füge ich den Zeilenumbruch ein?

    Habe das jetzt mal so:

    VARIABLE:= WERTX bzw. Ergebnis eines SELECTS

    SELECT clobdata INTO lob_loc FROM a_clobtable WHERE id=1 FOR UPDATE;

    v_string:= VARIABLE ;

    amt:=length(v_string);

    dbms_lob.writeappend(lob_loc, amt, v_string);

    COMMIT;

    Wie kann ich bei

    v_string:= VARIABLE ;

    mit || nen Zeilenumbruch anhängen?

    Also dann

    v_string:= VARIABLE || /*Zeilenumbruch*/ ;

    Vielen Dank für die Hilfe!

    mfg

    yallayalla

  13. Hallo!

    Danke für die schnelle Antwort.

    Allerdings hänge ich immer noch irgendwie:

    Wie mache ich einen "Stream" bzw. muss das sein?

    Im Endeffekt lasse ich eien Schleife laufen, die mir in Variable x bei jedem Durchlauf nen Wert gibt. Den Wert x will ich dann in nen CLOB schreiben.

    Mache ich da nen Writeappend bei jedem Schleifendurchlauf? uind wenn ja, wie muss ich was definieren, um den CLOB zu füllen?

    Habe ne Tabelle angelegt mit

    Create Table a_Clobtable(ID Number, clobdata Clob default empty_clob());

    In clobdata sollen logischerweise die Daten rein.

    mfg

    yallayalla

  14. Hallo!

    Habe sowas hier gefunden,

    allerdings werde ich nicht ganz schlau draus:

    lob_loc BLOB;

    buffer RAW;

    amt BINARY_INTEGER := 32767;

    pos INTEGER := 2147483647;

    i INTEGER;

    BEGIN

    SELECT b_col INTO lob_loc

    FROM lob_table

    WHERE key_value = 12 FOR UPDATE;

    FOR i IN 1..3 LOOP

    dbms_lob.write (lob_loc, amt, pos, buffer);

    -- fill in more data

    pos := pos + amt;

    END LOOP;

    EXCEPTION

    WHEN some_exception

    THEN handle_exception;

    END;

  15. Hallo!

    Erstmal danke für den Tip, aber so ganz verstehe ich das nicht.

    Zu meinem Szenario:

    Ich will die Packages in meiner DB auslesen und als ganzes in einem BLOB ablegen. Also lese ich ich zeilenweise die Packages aus...und wie schreibe ich nun in den BLOB?

    gruss

    yallayalla

  16. Hallo!

    Ich muss einen Haufen Daten, die ich aus der DB auslese, in ein File schreiben.

    Ich will die Daten gern in ein BLOB schreiben, also ein LOB, der in der Datenbank abgelegt wird.

    Wie kann ich in ein BLOB schreiben und wie kann ich den BLOB auslesen.

    Kann man zeilenweise in den BLOB schreiben?

    Leider habe ich bei google nicht viel gefunden, was mir da weiterhilft.

    Vielen Dank.

    Gruss

    yallayalla

  17. Hallo!

    Ersteinmal vielen Dank für die vielen Hinweise und Anmerkungen.

    Das hier soll automatisiert (mehr oder weniger) erfolgen:

    (Oracle User, Tabellenstrukturen, Tabelleninhalte,PL/SQL Procederen ...)

    anlegen.

    Das Installieren der Anwendung erfolgt bisher manuell bzw. mittels Ex-/Import aus der bestehenden Datenbank.

    mfg

    yallayalla

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...