PL/SQL Funktion schreiben

Hallo,

ich möchte eine PL-SQL Funktion schreiben, die eine Telefonnummer erhält, mögliche Sonderzeichen entfernt (z.B. ()± usw) und die bereinigte Telefonnummer wieder zurückgibt.

Gruß,
Christian

Hi!

ich möchte eine PL-SQL Funktion schreiben, die eine
Telefonnummer erhält, mögliche Sonderzeichen entfernt (z.B.
()± usw) und die bereinigte Telefonnummer wieder zurückgibt.

Schau mal unter „replace“ bzw. „translate“ nach …

Grüße,
Tomh

Ich habe jetzt eine Tabelle gebaut mit 2 Feldern (Mit dem zu suchenden String und mit dem zu ersetzenden String). In der Tabelle sollen verschiedene Einträge rein. (z.B +49 soll er in eine 0 ersetzen, einen Bindestrich soll er entfernen usw.) Jetzt laufe ich in einer Schleife sämtliche Suchstrings durch und will dann die Telefonnummer mit decode ändern.

FOR datensatz IN (SELECT * FROM TELFONSUCHE)
LOOP
Telnr := SELECT decode(Telnr, datensatz.SUCHEN, datensatz.ERSETZEN) from dual;
END LOOP;

Aber solche Datenbankfunktionen wie decode kann ich ja nur in einem SQL Statement benutzen.

Ich hoffe ich habe das halbwegs verständlich aufgeschrieben.

Gruß,
Christian

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Aber solche Datenbankfunktionen wie decode kann ich ja nur in
einem SQL Statement benutzen.

Hallo Christian,

na und. Dafür ist DUAL doch da.

Ich hoffe ich habe das halbwegs verständlich aufgeschrieben.

Ehrlich? Nein.

Gruß

Peter

Gruß,
Christian

Hallo Christian,

was gefällt dir am Vorschlag von tomh nicht? Scheint doch perfekt zu passen.

Grüßt: Guido

Mahlzeit,

deine Aufgabenbeschreibung enthält zwei Teile:

In der
Tabelle sollen verschiedene Einträge rein. (z.B +49 soll er in
eine 0 ersetzen, einen Bindestrich soll er entfernen usw.)

Das wäre der eine: eine einigermaßen intelligente Strinbgearbeitungsfunktion, spezialisiert auf Telefonnummern.

Jetzt laufe ich in einer Schleife sämtliche Suchstrings durch
und will dann die Telefonnummer mit decode ändern.

Das ist der zweite: Anwenden der Funktion auf alle Einträge einer Tabelle.

Für den ersten Teil hat dir Tomh einen brauchbaren Hinweis gegeben. Wenn du mehr Beispiele brauchst, schau ruhig in der Oracle-Dokumentation zu PL/SQL nach - sie ist hervorragend. Zusätzlich gibt es im Web jede Menge Seiten mit beispielen und fertigen Codeteilen, z.B. http://wiki.ittoolbox.com/index.php/Code:User-Define…

Zum zweiten Teil deiner Aufgabe: in einer Datenbank ist es meist ziemlich schlecht, alle Datensätze in einer FOR-Schleife zu bearbeiten. In dem genannten Zusammenhang würde ich es sogar dämlich nennen. Dazu gibt es ja Abfragen in der Art:

UPDATE Meine\_Tabelle
 SET Ersetztes\_Feld = Meine\_Tolle\_Stringfunktion(Suchfeld);

Hoffe geholfen zu haben!

Gruß

Sancho