Подобно на функциите PL/SQL, съхранената процедура е самостоятелна подпрограма, която е предназначена да изпълнява някои специфични задачи. Също подобно на функциите, процедурите се наричат PL/SQL блокове, така че могат да бъдат използвани повторно, тъй като се съхраняват в базата данни като обект на база данни. Но за разлика от функциите PL/SQL, съхранената процедура не връща никаква стойност .
Синтаксис на PL/SQL съхранени процедури
CREATE [OR REPLACE] PROCEDURE pro_name (Parameter – List) IS [AUTHID DEFINER | CURRENT_USER] Declare statements BEGIN Executable statements END procedure name; /
Горният синтаксис на съхранената процедура PL/SQL е много подобен на синтаксиса на PL/SQL функциите, който видяхме в последния урок за PL/SQL. С изключение на две неща:
- Няма клауза за връщане.
Основната разлика между функцията PL/SQL и съхранената процедура е, че за разлика от функциите, съхранената процедура не връща никаква стойност.
- Клауза AUTHID.
Клаузата AUTHID се използва за настройка на модела на права за PL/SQL процедурите. Тази клауза има два флага.
- DEFINER и
- CURRENT_USER
Тъй като тази клауза е незадължителна, така че в случай, че не използвате клауза AUTHID, Oracle Engine ще зададе правомощията (AUTHID) на DEFINER по подразбиране за вас. Сега сигурно се чудите какви са тези права на DEFINER и CURRENT_USER?
DEFINER вдясно: Правото на дефиниране е правото по подразбиране, присвоено на процедурата от oracle engine. Това право означава, че всеки с привилегия за изпълнение на процедурата действа така, сякаш е собственик на схемата, в която е създадена привилегията.
CURRENT_USER вдясно: Задаването на нивото на правомощия на съхранена процедура на правото на current_user отменя правото по подразбиране, което е дефиниращо, и го променя на правата на извикващия.
Правото на извикване означава, че вие извиквате процедурата, за да действате върху вашите локални данни и изисква да репликирате обекти с данни във всяка участваща схема.
Някои допълнителни точки за съхранената процедура
- Можете да дефинирате процедура със или без формални параметри.
- Параметърът може да бъде или предаване по стойност или предаване по препратка .
- Процедурата ще бъде процедура за предаване по стойност, когато не посочите режима на параметрите, защото използва режима IN по подразбиране.
Това е всичко във Въведение в PL/SQL съхранените процедури. Предполагам, че ще се насладите и на четенето на тези по-долу блогове. Всички блогове са написани, като вземете предвид интервюто за работа и сертифицирането на Oracle Database, не забравяйте да ги проверите.
- Разликите между PL/SQL функцията и PL/SQL съхранените процедури?
- Какво представляват режимите на параметри в PL/SQL функции и процедури?
- Какво са формалните и действителните параметри?
Винаги помнете:Можете да помогнете на другите да учат и да подкрепите мен и моя канал, както и този блог, като го споделите с приятелите си в социалните си медии.
Това е момчета. Благодаря за четенето. Пазете се и приятен ден!