Oracle
 sql >> база данни >  >> RDS >> Oracle

Обединение, причиняващо ORA-01790:изразът трябва да има същия тип данни като съответния израз

Мисля, че не можете да направите такова кастинг в SQL. Но в 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;
/

Мисля, че сгреших в предположенията си по-горе. Не го изтрих, тъй като все още е валиден пример. По-долу е пример за прехвърляне на съществуваща колона на таблица (emp таблица) с COLLECT като тип на table_type:

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. СЪЗДАВАНЕ НА ТАБЛИЦА В ПРОЦЕДУРАТА

  2. Как мога да се свържа с база данни на Oracle като SYS, използвайки ADO низ за връзка?

  3. Как да използвате променливи в клауза where на Oracle PL/SQL

  4. Изпълнете командата за импортиране на Oracle от Java и вижте изхода на конзолата

  5. Как да дефинирам пакетна процедура на Oracle в H2 за тестване