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

PLS-00382:biểu thức không đúng kiểu khi thực thi hàm và cố gắng đặt kiểu trả về vào một biến

Bạn đang khai báo loại bản ghi, bộ sưu tập / loại bảng và tất cả chức năng trong cùng một gói.

Khi bạn gọi hàm, bạn phải sử dụng cùng loại, từ gói đó.

Nhưng nó không phải. Nó có cấu trúc giống nhau - các trường và kiểu dữ liệu - nhưng không giống với những gì Oracle liên quan. Oracle cần biết rằng chính xác cùng một kiểu đang được sử dụng, một phần để nó có thể theo dõi sự phụ thuộc giữa các đối tượng.

Khối ẩn danh của bạn cần tham chiếu đến các loại gói, thay vì khai báo (các) loại - tương tự nhưng xung đột của riêng nó:

DECLARE
    managers hr_package.managers_table_type;
BEGIN
    managers := hr_package.managers_multiple_departments;
END;

Như một phần thưởng, nó liên quan đến việc nhập ít hơn nhiều và có nghĩa là bạn không phải quản lý các loại trùng lặp.

Tuy nhiên, điều đó cũng có nghĩa là các khai báo kiểu phải nằm trong đặc tả gói - tất nhiên là trường hợp của bất kỳ thứ gì bạn muốn hiển thị công khai.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển Oracle PL / SQL sang Snowflake mà không cần JavaScript

  2. SQL Loader Error:Trường độ dài biến vượt quá độ dài tối đa.

  3. Có một Bảng Oracle được đặt tên là Từ dành riêng, Những vấn đề nào có thể phát sinh?

  4. Cách tạo datetime từ các phần trong Oracle / PLSQL?

  5. Gọi một lệnh gọi hàm trong một chuỗi trong một Thủ tục Oracle