الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

ارجوا التوضيح

Featured Replies

بتاريخ:

السلام عليكم
اولا اود ان اشكر كل اعضاء هذا المنتدي الجميل وارغب فى مساعدتكم لي .انا فانا اجيد sql الي حد ما بشكل جيد واتعامل مع الفورمز بشكل ما متوسط ولكن مشكلتى تكمن فى pl/sql وارجوا مساعدتكم . انا قمت بتحميل ملفات ودروس كتير فى pl/sql ولكن لم استطع فهم الكثير منها وذلك لان الشرح فيها يتم بشكل نوعا ما معقد وربما يكون مخي انا اللي مش كبير معلش استحملونى .
انا كل اللي اريده منك تسهيل عملية شرح بعض الامور لي بشكل نوعا ما مبسط وممثل ولو بمثال بسيط
هقولكم مثال يعني علشان اللي يشرحلى يفهمنى انا عايزه ايه ويقدر يوصلي المعلومة
مثلا احنا عارفين كلمة select مهمتها الاختيار فمثلا لو عايزين نختار كل الحقول بنكتب
select * from tab;
ودى معناها اختار كل الجداول اللي فى القاعدة لو حد يشرحلى بالشكل ده اكون ممنونه اوى وكل اللي بطلبه منكم مثال عملى . معلش اللي عايز يساعدنى علشان خاطرى يستحملني انا مش غبية اوى كده بس الامثلة المذكورة فى الدروس عبارة عن h , k n
كلها رموز مش فاهمه منها حاجة لكن لو فى اخ فاضل يقدر يشرحلى بمثال عملى على جدول زى emp ,sal
اوى حاجة المهم اقدر اطبق عليها في الطبيعة علشان افهم الشرح بشكل مبسط .
انا اسفة اوى اوى انى اتكلمت كتير بس فعلا انا محتاجة مساعدتكم ودلوقتى الحاجات اللي عايزة اعرفها هى كالاتى :
جملة IF وجملة elseif وجزء Declare – exception امتى استخدمهم وازاى بمثال مبسط على جدول حقيقي وليكن emp .
معلش استحملونى بالنسبة لل
cursor
procedure
Loop
SESSION
% rowtype
package
package body
function
احتاج منكم كلمتين مجرد تعريف كل واحدة منهم وامتى باستخدمهم وازاى على مثال واحد بس مش اكتر على جدول حقيقي زى emp , dept اى حاجة مش مهم المهم مثال حقيقي مشروح افهم منه مش اكتر .
انا اسفة يا جماعة بس والله حاولت افهم من الدروس لكن مقدرتش وميرسي جدا جدا جدا لاي اخ يبدى اى مساعدة
وميرسى ليكم سواء ساعدتموني او لا .
اختكم نورا .

بتاريخ:

بس ياسيدى انا مش ممتاز فى الاوراكل ولكن ممكن ابسط الامور ز اتمنى ان يكون شرحى بسيط ويكون ودقيق
فى البدايه لازم تعرف البوك block : دة اللى بتكتب فيه مجموعة الاكواد بتعتك وبيوضح اكتر فى الفورم
مما يتكون ال block

declare (optional) اختيارى
.
.
.
begin
.
.
.
Exception (optional) اختيارى
.
.
.
end;


الشرح
declare
تكتب حينما تريد تعريف متغيرات او مؤشرات وهى اختياريه لانه من الممكن ان يكون البلوك الخاص بك مكون من begin and end

begin
تكتب حينما ترغب فى بدايه تنفيذ الاكواد اى تعرف ال compile ان ما بين begin and end هى بلوك من الاكواد.

exception
من الطبيعى انة تحدث اخطاء سواء كانت من المستخدم او النظام مثل
1- اخطاء المستخدم
1- انت مصمم حقل نوع البيانات ارقام و المستخدم ادخل حروف .
2- مستخدم يقوم بعمل بحث التصميم ان يضع النتيجه فى متغير واحد ولكن النتيجه جلبة اكثر من واحد .
و اشياء كثيرههههه
2- اخطاء النظام
1- عدم اتمام عملية log on
.
.
يعنى من الاخير ال exception دى عشان لما يحصل خطاء تقدر تعلجه فى هذه المنطقه اللى انت بتكون محدد ايه الخطاء و ايه علاجه واو يعمل ايه فة الخطاء .

اولآ : cursor المؤشر .

declare
a number; 
cursor ehab is/as
   select empno 
   from emp
   where ename ='ehab';
begin
 open ehab;
 loop
   fetch ehab into a;
   exit when ehab%notfound;
 end loop;
 close ehab;
end;


المؤشر
هو عباره عن pointer يقف فى المكان اللى انت تحدده فى الجدول و يتم تعريفه فى منطقة التعريفات لانه يحجز مكان فى الذاكره حتى يخزن بها الناتج من تنفيذ الاستعلام .
وطبعآ ده ابسط نوع من انواع المؤشرات

ثالثآ procedure الاجراء :
هو عباره عن مجموعة اكواد مكتوبه و تكون لها اسم و السبب الاساسى لوجوده هو عدم تكرار الاكواد اى عندما تكون تريد استخدام نفس الاكود فى اكثر من مكان فى نفس المشروع فبدل من اعاده كتابتها بتكتب اسم الاجراء

create or replace procedure query_emp(p_id in out emp.empno%type,
                                     p_name out emp.ename%type,
                                     p_sal out emp.sal%type,
                                     p_comm out emp.comm%type)
as
begin
select ename,sal,comm
into p_name,p_sal,p_comm
from emp
where empno=p_id;
end query_emp;

بتاريخ:
  • كاتب الموضوع

مش عارفة اقولك بجد ميرسي ليك لانك اهتمت بأمرى والف شكرا .
ولكن اتمني ان تبسط شرح cursor و procedure اكتر من كده شوية لانك مدخل فيه فىprocedure مدخل فيه % rowtype وانا مش عارفه تقصد بيها ايه وبالنسبة لل cursor امتى بستخدمه بالتحديد وكذلك Loop لو تقدر تشرحه يبقى كتر خيرك معلش بتقل عليك فياريت تستحملنى .
اختك نورا.

بتاريخ:

بس ياسيدى ال cursor ده انا بستخدمه لما احب اجيب بيانات من اى جدول ذى ما هو مكتوزب فى المثال السابق و ال cursor ده ليه مجموعة خصائص بتفدنى فى حاجات ذى
1- %ISOPEN اذا كان ال cursor مفتوح ولا لاااااا و دى بترجع منطقى true or false
2- %NOTFOUND ودى اذا ال cursor لم يد بيانات
3-%FOUND ودى لو وجد بيانات
4- %ROWCOUNT ودى عدد السجلات التى وجدها

يعنى الخلاصة ان ال cursor ده التطوير لجملة ال select

اما الprocedure
انت دلوقتى بتعمل مشروع شؤون عاملين وانت لازم تعمل تحديث لبيانات الموظفين فى اربع اماكن ما هو الحل ؟؟؟؟؟؟؟؟؟؟؟؟؟؟ تكتب الاكواد بتعتك 4مرات ( مش كتير )
ملحوظه : فى قعده فى البرمجه بتقول ان المبرمج الشاطر اللى يعمل اللى هو عوزه فى اقل عدد سطور و كمان دقة عاليه يعنى لو انت كتبت الاكواد بتعتك 4 مرات تكون كسرت القاعده اما الافضل هو عمل الاجراء .
شرح الاجراء
بس فى البدايه انت عاوز تنشاء يعنى بكتب create وبعدها انت بتحدد ايه اللى عاوز تنشائه proceduer و كمان لازم تحدد اسمه عشان تعرف تنادى عليه . وبعدها تحدد انواع المتغيرات اللى هتتعامل معاها و هى ادخالin اخراج out و ادخال اخراج in out يعنى لو انت عندك شرط انت لازم تبعت قيمة الشرط اكيد مش هتبعتها فى تكسى اكيد فى متغير و ده ال in و لو انت عاوز تخرج نتيجة الاجراء كيد مش هتخرجها مع واحد صحبك و لكن فى out و لو انت عاوز نفس المتغير اللى داخل ياخد معاه الناتج و يخرج بيه يكون ده ال in out . و باقى الكود اللى انت عاوز تعمله اعمله .

اتمنى يكون الشرح بسيط و وصل

ايهاب وجدى

بتاريخ:

ال loop
لو انت عاوز تعمل جدول ضرب هل من الممكن ان تكتب 1*1=1 الى جدول رقم 12 طبعآ مرهقة جدآآآآآ
ولكن لو انا هاعمل عمليه تكراريه بأستخدام for loop بسعلى الكود الاول بعدين نتكلم

DECLARE
TYPE num_array IS TABLE OF number(4) INDEX BY BINARY_INTEGER;
i   number(4);
b number(4);
num    num_array;
BEGIN
FOR  i  IN  1..10 LOOP
 for b in 1..10 loop
   num( := i * b;
   DBMS_OUTPUT.PUT_LINE(i || '*' || b || '= ' || num( );
 end loop;
END LOOP;
END;


بس الفور دى انا بقولو يعمل التكرار من اول فين ز لغايت فين يعنى من 1 الى 10 و هنا بنعبر عنها من خلال( .. ) و عشان اخرج الناتج لازم استخدم باكج اسمها DBMS_OUTPUT.PUT_LINE وطبعآ الفكره هنا ان فى 2 loop عشان تلف من جدول 1 الى 10 و كل جدول من الجداول تلف من 1 الى 10 و طبعآ نوع المتغير اللى شايل الناتيجه لازم يكون array عشان يحما اكثر من قيمه و تعريفة ذى ما انت شايف

ايهاب وجدى

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.