
yallayalla
-
Gesamte Inhalte
77 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Beiträge von yallayalla
-
-
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
-
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
-
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
-
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
-
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
-
Hallo Ganymed,
muss ich das Array noch irgendwie initialisieren?
Oder so OK?
Declare
TYPE v_column IS TABLE OF VARCHAR(500) INDEX BY BINARY_INTEGER;
begin
..
v_column(1):= 'x';
end;
mfg
yallayalla
-
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
-
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
-
Hallo!
Also quasi so:
TYPE mein_array IS TABLE OF VARCHAR(500) INDEX BY BINARY_INTEGER;
mfg
yallayalla
-
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
-
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
-
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
-
Hallo!
Wie erstelle ich in PL/SQL ein Array und wie wird das dann angesprochen?
Ein eindimensionales Array würde reichen.
Danke für jeden Tip!
gruss
yallayalla
-
Hi!
Achja, und wie kann ich den CLOB anzeigen/ausgeben?
Danke.
Gruss
Yallayalla
-
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
-
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
-
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;
-
Ho!
Wie ist denn die ganue Syntax, um Daten in den Blob einzufuegen?
und wie nutze ich den lob_loc?
mfg
yallayalla
-
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
-
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
-
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
-
Hallo!
Aber ein Dump nimmt doch immer den Inhalt mit, oder?
Oder kann ich auch die Struktur auch ohne Dateninhalt abbilden?
mfg
yallayalla
-
Hallo!
Also alle Packages habe ioch nochmal sperat als Dateien...es geht eigentlich nur um die Tabellen...
mfg
yallayalla
-
Anhang:
Es existieren doch VIEWS unter SYS, die alle Tabellen, Packages etc. anzeigen können. Koennte man aus diesen Ausgaben auch neue CREATE X Befehle machen, die die DB neu anlegen?
Wie kann ich die VIEWS unter SYS nutzen?
mfg
yallayalla
Oracle Package - Proceduren aufrufen
in Datenbanken
Geschrieben
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