कुछ ऐसा हो सकता है:
CREATE OR REPLACE FUNCTION explode(longline varchar)
RETURN sys.dbms_debug_vc2coll PIPELINED
IS
pos PLS_INTEGER;
lastpos PLS_INTEGER;
element varchar(2000);
BEGIN
lastpos := 1;
pos := instr(longline, ',');
while pos > 0 loop
element := substr(longline, lastpos, pos - lastpos);
lastpos := pos + 1;
pos := instr(longline, ',', lastpos);
pipe row(element);
end loop;
if lastpos <= length(longline) then
pipe row (substr(longline, lastpos));
end if;
RETURN;
END;
/
इसे इस तरह इस्तेमाल किया जा सकता है:
SQL> select * from table(explode('1,2,3')); COLUMN_VALUE --------------------------------------------- 1 2 3 SQL>
यदि आप 11.x पर नहीं हैं तो आपको रिटर्न प्रकार को स्वयं परिभाषित करना होगा:
create type char_table as table of varchar(4000);
और फंक्शन डिक्लेरेशन को इसमें बदलें:
CREATE OR REPLACE FUNCTION explode(longline varchar)
RETURN char_table pipelined
.....