आप पाइपलाइन फ़ंक्शन का उपयोग कर सकते हैं:
CREATE or replace TYPE test_type AS TABLE OF varchar2(40)
CREATE or replace FUNCTION test_func (d VARCHAR2)
RETURN test_type
PIPELINED
IS
BEGIN
FOR C1 IN ( SELECT REGEXP_SUBSTR (d, '[^,]+', 1, LEVEL) x
FROM DUAL
CONNECT BY REGEXP_SUBSTR (d, '[^,]+', 1, LEVEL) IS NOT NULL)
LOOP
PIPE ROW (c1.x);
END LOOP;
END;
/
WITH test
AS ( your_query_here )
SELECT x.id2, x.mydate, y.*
FROM test x, TABLE (test_func (x.d)) y
मैं यहां तारीख (आरक्षित शब्द) के बजाय mydate और डेटा के बजाय d का उपयोग कर रहा हूं। नमूना:
WITH test
AS (SELECT 2 AS id2, SYSDATE AS mydate, '1.0,1.1,1.2,11,1.4,1.5,2.6,2.7,2.8,2.9,44,55' AS d FROM DUAL
UNION ALL
SELECT 3 AS id2, SYSDATE + 1 AS mydate, '19.5,19.9,11.5,11.1,21.2,33,1.4,1.5,2.6,2.7,2.8,2.9' AS d
FROM DUAL
UNION ALL
SELECT 4 AS id2, SYSDATE + 1 AS mydate, '9.5,9.9,1.5,1.1,1.2,66,1.4,1.5,2.6,2.7,2.8,2.9' AS d
FROM DUAL)
SELECT x.id2, x.mydate, y.*
FROM test x, TABLE (test_func (x.d)) y
कुछ लिंक:
कॉमा सेपरेटेड स्ट्रिंग को कैसे विभाजित करें और चुनिंदा स्टेटमेंट के IN क्लॉज में कैसे पास करें
पाइपलाइन और समानांतर टेबल फ़ंक्शंस का उपयोग करना