Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

संघ एक ORA-01790 का कारण बनता है:अभिव्यक्ति में संबंधित अभिव्यक्ति के समान डेटाटाइप होना चाहिए

मुझे लगता है कि आप एसक्यूएल में ऐसी कास्टिंग नहीं कर सकते हैं। लेकिन 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
 /



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. विंडो फ़ंक्शन SORT महंगा है, क्या हम इसे दूर कर सकते हैं?

  2. ओरेकल किसी भी निर्देशिका को इस प्रतिबंध के साथ कैसे प्रदान करें कि सभी निर्देशिका किसी दिए गए निर्देशिका के अंदर बनाई जानी चाहिए?

  3. स्वचालित रोलबैक स्क्रिप्ट oracle

  4. Oracle REGEXP_SUBSTR से SUBSTR + INSTR

  5. व्याख्या योजना और निष्पादन योजना के बीच अंतर