इस लेख में, मैं एक फ़ंक्शन का उदाहरण दे रहा हूं जिसका उपयोग मैं ज्यादातर PL/SQL में एक स्ट्रिंग को विभाजित करने के लिए करता हूं। विशेष रूप से, जब मैं एक सीमांकित फ़ाइल आयात करने के लिए एक प्रोग्राम लिख रहा हूँ। यहां वह फ़ंक्शन और इसका उपयोग करने का एक उदाहरण दिया गया है।
एक स्ट्रिंग को विभाजित करने के लिए PL/SQL फ़ंक्शन
यह फ़ंक्शन चार पैरामीटर लेता है, और इन मापदंडों का विवरण इस प्रकार है:
- Source_String :स्ट्रिंग टू स्प्लिट
- फ़ील्ड_स्थिति :सीमांकक स्थिति
- अनटर्मिनेटेड :डिफ़ॉल्ट रूप से गलत, लेकिन अगर आप ट्रू पास करते हैं, तो यह स्ट्रिंग के अंत में निर्दिष्ट सीमांकक जोड़ देगा।
- सीमांकक :डिफ़ॉल्ट अल्पविराम है ',', आप कोई अन्य सीमांकक पास कर सकते हैं।
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;
उदाहरण:PL/SQL प्रोग्राम में इस फ़ंक्शन का उपयोग करें
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; /
आउटपुट:
Java .Net C Oracle PHP PL/SQL procedure successfully completed.
यह भी देखें:
- Oracle 11g में PL/SQL का उपयोग करके JSON में डेटा निर्यात करें
- कर्मचारी विवरण मुद्रित करने के लिए पीएल/एसक्यूएल कार्यक्रम