[M-l][F=Navy]PL/SQL RECORD[/F][/M]
اخواني الأعزاء السلام عليكم ورحمة الله وبركاته
تطرقت في الموظوع السابق عن Cursor ولم اكمله بعد وقبل ان اكمله كان لزاماً علي ان اشرح PL/SQL Record حيث انه سيكون موجوداً عند اكمالي للشرح ولأن البعض قد لايعرف PL/SQL Record مما ينشأ عن ذلك عدم فهم للـ Cursor ومحتوى البرنامج .
PL/SQL Record تعريفه سهل جدا فهو عباره عن سجل للمجموعة حقول لجلب البيانات منها. ( اتمنى ان يكون التعريف واضح ) مثال ذلك :
.......
.......
TYPE emp_record_type IS RECORD
( ename VARCHAR2(10),
job VARCHAR2(9),
sal NUMBER(7,2));
emp_record emp_record_type;
......
......اصبح عندما تستدعي emp_record كأنك استدعيت الثلاث حقول السابقه معاً
هذه هي المهمه الأساسيه لها أختصار وتقليل البرنامج وسهولة التصحيح ... الخ .
والآن البعض لايعرف استخدام علامة TYPE%
هناك حقل اسمه SAL في الجدول EMP واردت ان تنشأ حقل آخر بنفس مواصفات ذلك الحقل تستخدم %TYPE مثال:
DECLARE
TYPE emp_record_type IS RECORD
(empno NUMBER(4) NOT NULL :=100,
ename emp.ename%TYPE,
job emp.job%TYPE);
emp_record emp_record_type;من المثال السابق تتضح الرؤيه
لاحظ السطر الخاص بـ ename انت انشأت حقل وقلت له خذ جميع مواصفات الحقل ename الموجود في الجدول emp وأقصد بالمواصفات اي نوع الحقل وطوله ..الخ بدلا من كتابتها كما في الكود الأول.
والآن ننتقل للمرحله الأخرى ، ماذا لو كان عندك جدول يحتوي على عدة حقول وانت تريد ان تضع جميع الحقول في Record حتى تستريح من عناء كتابتها وتطبيق الأوامر على كل واحد منها !!!
الحل في ROWTYPE% مثال :
DECLARE
emp_record emp%ROWTYPE;
لقد قام بجلب جميع الحقول بمواصفاتها ووضعها في الريكورد
ماذا لو اردت ان تستدعي حقل واحد من هذا السجل ؟ الحل
emp_record.sal مثلا لحقل الراتبوالله من وراء القصد
ابو عبدالآله