Zitat von
ibp:
wo und wie wende ich das denn an?
Du gibst ihm ein Schema, einen SuchString und den string mit dem ersetzt werden soll. Die Prozedur wird in allen Tabellen dieses Schemas in alen Feldern vom Typ Char, VarChar oder VarChar2 pSearchStr mit pReplStr ersetzen.
Zum Bleistift:
User Ernie hat eine Tabelle names Tab1, mit diesen Spalten:
SQL-Code:
Feld1 -> Integer
Feld2 -> VarChar2(2000)
Feld3 -> Char(5)
Du könntest jetzt das Ganze mit den Werten ausführen
ReplaceSomeChars('ERNIE', 'Hallo', 'Gudd''n Aabend');
Als Ergebnis wird er für Tab1 diesen Code erzeugen und ausführen:
SQL-Code:
Declare
lSearchStr Char(5) := :iSearchStr;
lReplStr Char(13) := :iReplStr;
Begin
Update ERNIE.Tab1
SET Feld2 = replace(Feld2, lSearchStr, lReplStr)
,Feld3 = replace(Feld3, lSearchStr, lReplStr);
End;
Falls
IB keine anonymen Böcke unterstützt, könnte man auch nur ein UPDATE nehmen.
(da ich für jedes Auftauchen eines Parameters in Oracle's dyn.
SQL einen Wert übergeben müsste, nehme ich anonyme Blöcke
)
Für All_tables brauchst du das
IB-Conterfei einer Tabelle, in der alle Tabellen aufgelistet sind.
All_Tab_Columns ist (guess what...), eine Liste aller Spalten aller Tabellen (inklusive deren Datentyp)
Falls du wirklich in vielen Tabellen Werte ersetzen musst, könnntest du das da oben jedenfalls als Grundlage nehmen.
Es war nur schnell hingetippt und an meinem "Sandkasten" getestet. (Irgendwofür müssen Raucherpäuschen doch gut sein
)
Ich garantiere für nix