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

Oracle Kiểu do người dùng xác định bên trong định nghĩa gói

Không, nó không được phép:

SQL> CREATE OR REPLACE PACKAGE AF_CONTRACT AS  -- spec
   -- PROCEDURE my_rpcedure (emp_id NUMBER);
   TYPE DTO_GRID AS OBJECT
   (
     ROWKEY    NVARCHAR2(200),
     COLUMNKEY NVARCHAR2(200),
     CELLVALUE NVARCHAR2(200),
     OLDVALUE  NVARCHAR2(200),
     TAG       NVARCHAR2(200)
   );
END AF_CONTRACT;
/
  2    3    4    5    6    7    8    9   10   11   12

Warning: Package created with compilation errors.

SQL> SQL> sho err
Errors for PACKAGE AF_CONTRACT:

LINE/COL ERROR
-------- -----------------------------------------------------------------
3/4      PLS-00540: object not supported in this context.
SQL>

Nếu bạn muốn tạo một kiểu chỉ truyền dữ liệu giữa các thủ tục PL / SQL thì hãy sử dụng cú pháp PL / SQL RECORD:

SQL> CREATE OR REPLACE PACKAGE AF_CONTRACT AS  -- spec
   -- PROCEDURE my_rpcedure (emp_id NUMBER);
   TYPE DTO_GRID IS RECORD
   (
     ROWKEY    NVARCHAR2(200),
     COLUMNKEY NVARCHAR2(200),
     CELLVALUE NVARCHAR2(200),
     OLDVALUE  NVARCHAR2(200),
     TAG       NVARCHAR2(200)
   );
END AF_CONTRACT;
/
  2    3    4    5    6    7    8    9   10   11   12
Package created.

SQL>

Tuy nhiên, nếu bạn muốn một kiểu mà bạn có thể sử dụng trong câu lệnh SQL - nghĩa là, làm đầu vào cho TABLE() - bạn sẽ cần tạo nó dưới dạng một kiểu SQL. SQL và PL / SQL sử dụng hai công cụ khác nhau và chỉ các loại SQL được hiển thị cho công cụ SQL.

Lời khuyên của tôi về sự cần thiết của Các kiểu SQL không còn đúng với các phiên bản Oracle sau này. Chắc chắn trong 11gR2 và 12c, công cụ SQL sẽ hỗ trợ SQL trong các gói PL / SQL sử dụng bảng PL / SQL trong một TABLE() mệnh đề. Các loại phải được khai báo trong thông số kỹ thuật gói, do đó công khai và hiển thị đối với công cụ SQL. Dưới vỏ bọc Oracle tạo ra các kiểu SQL cho mỗi khai báo. Bạn có thể phát hiện ra các Loại này vì tên của chúng bắt đầu từ SYS_PLSQL_ theo sau là số nhận dạng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có cách nào tự động để tạo tập lệnh khôi phục khi chèn dữ liệu với LINQ2SQL không?

  2. Làm thế nào để nhập các ký tự đặc biệt như &trong cơ sở dữ liệu oracle?

  3. Nhận dấu vết ngăn xếp lỗi MySQL trên Kết nối JDBC của Oracle

  4. Cập nhật JavaFX TextArea ngay lập tức

  5. Cách giải quyết ORA-04063:xem SYS.ALL_QUEUE_TABLES có lỗi?