Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Liên hợp gây ra ORA-01790:biểu thức phải có cùng kiểu dữ liệu với biểu thức tương ứng

Tôi nghĩ rằng bạn không thể thực hiện truyền như vậy trong SQL. Nhưng trong PL / SQL bạn có thể:

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;
/

Tôi nghĩ rằng tôi đã sai trong các giả định của tôi ở trên. Tôi đã không xóa nó vì nó vẫn là ví dụ hợp lệ. Ví dụ dưới đây truyền cột bảng hiện có (bảng trống) với COLLECT làm loại 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. SQL:Nhận các bản ghi được tạo trong phạm vi thời gian cho các ngày cụ thể

  2. Cảnh báo thời gian chờ đợi dành cho cơ sở dữ liệu EM12c

  3. Bình nào trên máy chủ weblogic / các tài nguyên khác có thể có lớp:oracle.security.jps.ee.http.JpsFilter?

  4. HSQLDB ROWNUM tương thích với Oracle

  5. Làm cách nào để gửi kết quả truy vấn oracle qua email. Tôi muốn đính kèm vào email dưới dạng tệp excel.