Einzelnen Beitrag anzeigen

Robert_G
(Gast)

n/a Beiträge
 
#8

Re: Zeichen in Feldinhalten per Konsole und SQL ersetzen

  Alt 14. Jul 2004, 19:55
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
  Mit Zitat antworten Zitat