In diesem Artikel gebe ich ein Beispiel für eine Funktion, die ich meistens verwende, um einen String in PL/SQL aufzuteilen. Besonders, wenn ich ein Programm schreibe, um eine Datei mit Trennzeichen zu importieren. Hier sind diese Funktion und ein Beispiel, wie man sie benutzt.
PL/SQL-Funktion zum Teilen eines Strings
Diese Funktion benötigt vier Parameter, und die Details dieser Parameter sind wie unter:
- Source_String :Zeichenfolge zum Teilen
- Field_Position :Position des Trennzeichens
- Unbeendet :Standardmäßig False, aber wenn Sie True übergeben, wird das angegebene Trennzeichen am Ende der Zeichenfolge hinzugefügt.
- Trennzeichen :Standard ist Komma ',', Sie können jedes andere Trennzeichen übergeben.
CREATE OR REPLACE FUNCTION GetString ( Source_string IN VARCHAR2, Field_position IN NUMBER, UnTerminated IN BOOLEAN DEFAULT FALSE, Delimiter IN VARCHAR2 DEFAULT ',') RETURN VARCHAR2 IS iPtrEnd PLS_INTEGER := 0; iPtrStart PLS_INTEGER := 0; vcSourceStrCopy VARCHAR2 (4000) := Source_string; BEGIN IF UnTerminated THEN vcSourceStrCopy := vcSourceStrCopy || Delimiter; END IF; IF Field_Position > 1 THEN iPtrStart := INSTR (vcSourceStrCopy, Delimiter, 1, Field_Position - 1) + LENGTH (Delimiter); ELSE iPtrStart := 1; END IF; iPtrEnd := INSTR (vcSourceStrCopy, Delimiter, 1, Field_Position); RETURN SUBSTR (vcSourceStrCopy, iPtrStart, (iPtrEnd - iPtrStart)); END GetString;
Beispiel:Verwenden Sie diese Funktion in einem PL/SQL-Programm
SET SERVEROUTPUT ON; DECLARE v_string VARCHAR2 (1000) := 'Java|.Net|C|Oracle|PHP'; TYPE t_string IS TABLE OF VARCHAR2 (1000) INDEX BY BINARY_INTEGER; t_str_array t_string; BEGIN FOR i IN 1 .. 5 LOOP t_str_array (i) := getstring (v_string, i, TRUE, '|'); END LOOP; FOR j IN t_str_array.FIRST .. t_str_array.LAST LOOP DBMS_OUTPUT.put_Line (t_str_array (j)); END LOOP; END; /
Ausgabe:
Java .Net C Oracle PHP PL/SQL procedure successfully completed.
Siehe auch:
- Exportieren Sie Daten in JSON mit PL/SQL in Oracle 11g
- PL/SQL-Programm zum Drucken von Mitarbeiterdetails