پاسخ : برای اینکار باید از شی package در اوراکل استفاده کرد
- پکیج ها مجوعه ای از کدهای نوشته شده در PL/SQL هستند که برای پیاده سازی کسب و کار خاصی ایجاد میشود
- پکیج میتواند شامل اشیاء گوناگونی از جمله رویه ها (procedures) ، توابع (functions) ، انواع داده ای ترکیبی (types) ، خطاها (exceptions) و غیره باشد
- هر پکیج از دو قسمت specification و body تشکیل شده است
- بخش specification شامل اشیاء public هستند که میتوانند در خارج از پکیج صدا زده شوند
- بخش body شامل پیاده سازی و کدهای نوشته شده ای هستند که میتوانند public یا private باشند
لطفا به کدهای نوشته شده ذیل دقت نمایید👇👇👇👇
create or replace package pkg_private is
/*1*/ procedure do_action;
end pkg_private;
/——————————————————-/
create or replace package body pkg_private is
/*4*/
procedure action as
begin
dbms_output.put_line(‘result’);
end action;
/*2*/
procedure do_action as
begin
/*3*/ action;
end do_action;
end pkg_private;
✳️ در سطر /*1*/ که در بخش specification قرار داده شده است رویه ای با نام do_action معرفی شده است ، چون رویه فوق در بخش specification است از نوع public در نظر گرفته میشود و میتوان آن را از خارج از پکیج صدا کرد
✳️ سطر /*2*/ که در بخش body قرار داده شده است پیاده سازی رویه public معرفی شده با نام do_action است
✳️ در سطر /*3*/ رویه با نام action فراخوانی شده است ، دقت کنید به دلیل اینکه رویه action در بخش specification قرار داده نشده است فقط در body پکیج قابل استفاده است ، در واقع رویه فوق حالت private دارد
✳️ سطر /*4*/ که در بخش body قرار داده شده است پیاده سازی رویه private معرفی شده با نام action است ، که شامل یک خط برنامه برای چاپ مقدار رشته است result در خروجی است
برای اعطای مجوز دسترسی اجرای پایج فوق به کاربر دیگری باید از دستور ذیل استفاده شود
grant execute on pkg_private to hs;
به دلیل اینکه کدهای مورد نظر در رویه private قرار داده شده با نام action است که در body پکیج است امکان مشاده کدهای نوشته شده توسط کاربر hs وجود ندارد . کاربر hs فقط اعضاء public پکیج فوق را مشاهده میکند