मुझे लगता है कि आप एसक्यूएल में ऐसी कास्टिंग नहीं कर सकते हैं। लेकिन PL/SQL में आप यह कर सकते हैं:
CREATE OR REPLACE TYPE STRARRAY AS TABLE OF VARCHAR2 (255)
/
DECLARE
tab STRARRAY;
cnt NUMBER:= 0;
BEGIN
SELECT COUNT(*)
INTO cnt
FROM TABLE(CAST(tab AS strarray));
dbms_output.put_line(cnt);
END;
/
मुझे लगता है कि उपरोक्त मेरी धारणाओं में मैं गलत था। मैंने इसे नहीं हटाया क्योंकि यह अभी भी वैध उदाहरण है। उदाहरण के नीचे मौजूदा टेबल कॉलम (एम्प टेबल) को COLLECT के साथ टेबल_टाइप के प्रकार के रूप में कास्ट करना:
CREATE OR REPLACE TYPE varchar2_ntt AS TABLE OF VARCHAR2(4000);
/
SELECT deptno
, CAST(COLLECT(ename) AS varchar2_ntt) AS emps
FROM scott.emp
GROUP BY deptno
/
-- This is dumb but works:
SELECT deptno
, CAST(COLLECT(ename) AS varchar2_ntt) AS emps
FROM scott.emp
GROUP BY deptno
UNION ALL
SELECT deptno
, CAST(COLLECT(ename) AS varchar2_ntt) AS emps
FROM scott.emp
GROUP BY deptno
/