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

PLS-00382:изразът е от грешен тип чрез изпълнение на функция и опитайте да поставите върнатия тип в променлива

Вие декларирате типа на записа, типа колекция/таблица и функцията, всички в рамките на един и същи пакет.

Когато извиквате функцията, трябва да използвате същия тип от този пакет.

Но не е. Той има същата структура - полета и типове данни - но не е същият, що се отнася до Oracle. Oracle трябва да знае това точно същият тип се използва, отчасти за да може да следи зависимостите между обектите.

Вашият анонимен блок трябва да препраща към типовете пакети, вместо да декларира свой собствен - подобен, но противоречив - тип(ове):

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

Като бонус включва много по-малко въвеждане и означава, че не е нужно да управлявате дублиращи се типове.

Това обаче също така означава, че декларациите за тип трябва да са в спецификацията на пакета - което важи за всичко, което искате да бъде публично видимо, разбира се.




  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 разработчик

  2. Как да изключа изтичането на паролата за Oracle?

  3. Как да изтрия тригер в oracle, който съдържа специален символ?

  4. Oracle.ManagedDataAccess не разрешава псевдоним в низ за връзка

  5. Съхранени процедури на SQL Server от Oracle®