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

Получаване на грешка при извикване на която и да е функция в SQL заявка в пакет без деклариране на функция в спецификацията на пакета

Изобщо няма нищо общо с декларацията за напред.

Това се отнася до факта, че използвате SQL заявка за извикване на функцията . Изглежда, че когато използвате оператор за извикване на функция, вече не сте в обхвата на PL/SQL пакета, поради което можете да извиквате само публично достъпни функции.

Що се отнася до защо , мога само да предполагам, така че не го приемайте за даденост, но PL/SQL и SQL имат различни машини . Така че, когато правите sql заявка, дори във вашия pl/sql пакет, отивате на ниво SQL, където ще провери отново разрешенията според SQL машината. Така че няма представа, че се изпълнява от PL/SQL пакет и трябва да ви бъде разрешено да извикате частната функция.

Мисля, че разликата между двигателите може да се провери лесно, опитайте се да използвате varchar2 от 32000, той ще работи във вашата pl/sql функция. Сега, ако извикате вашата pl/sql функция, връщаща varchar2(32000) , ще се провали. Това е проблем, с който се сблъсках, но нямам база данни, за да ви дам фрагмент.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да съкратите TABLE в Oracle

  2. Недефинирана грешка в индекса при получаване на резултати с помощта на името на полето в Oracle pdo връзка

  3. Какво не е наред с Cursors?

  4. Oracle SQL Developer:как да видите резултатите от референтен курсор?

  5. JDBC Call to Oracle връща 3 въпросителни знака