В Oracle първо трябва да декларирате процедурата в спецификация на пакета и след това да създадете пълната процедура в тялото на пакета. Защото ако се опитате да създадете процедура само в тялото на пакета без нейната декларация в спецификацията на пакета, тогава ще получите грешката PLS-00302 компонент трябва да бъде деклариран и ORA-06550 невалиден PL/SQL блок. Така че по-долу давам пример как да създадете процедура в пакет в Oracle.
В този пример ще създадем процедура update_comm за актуализиране на комисионната в таблицата EMP. Тази процедура ще приеме параметъра за процент на комисиона.
Създайте процедура вътре в пакет в пример на Oracle
Декларирайте процедурата в спецификацията на пакета
CREATE OR REPLACE PACKAGE emp_pkg IS PROCEDURE update_comm (i_comm IN emp.comm%TYPE); END emp_pkg;
Създайте пълната процедура в тялото на пакета
CREATE OR REPLACE PACKAGE BODY emp_pkg IS PROCEDURE update_comm (i_comm IN emp.comm%TYPE) IS BEGIN UPDATE emp SET comm = sal * NVL (i_comm, 0) / 100; COMMIT; END update_comm; END emp_pkg;
Сега можете да изпълните тази процедура, както следва:
BEGIN /* Updating commission with 5% of salary */ emp_pkg.update_comm (5); END;