moh.sami بتاريخ: 7 أبريل 2014 تقديم بلاغ مشاركة بتاريخ: 7 أبريل 2014 السلام عليكم ورحمه الله وبركاته ----------------------------- كان لدي سؤال علي composite data type الفرق بين recrod -1 2- row type % 3- is a table of 4- index by فاهم فيهم ( انهم يستخدموا لانشاء نوع جديد من الداتا بحيث انه اقدر اخزن فيه اكثر من نوع داتا) لكن يحصل عندي كنوع من الخلط ما بينهم وفي استخدمهم يا ريت اللى يوضح لنا التسلسل الصحيح بينهم حتى تعم الفائده علي الكل وجزاكم الله خيرا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
sam_t بتاريخ: 9 أبريل 2014 تقديم بلاغ مشاركة بتاريخ: 9 أبريل 2014 (معدل) يمكن الرد بعرض مثال من الجدول emp الموجود في المستخدم scott مثلا لنأخذ معلومات موظف ما EMPNO 7369 ENAME SMITH JOB CLERK MGR 7902 HIREDATE Wed 17/12/1980 SAL 800.00 COMM 1.00 DEPTNO 20 هذه البيانات مجتمعة تدل على بيانات موظف واحد في سطر من أسطر الجدول وهو الـ record وهذه هي النقطة رقم 1 أما نوع البيانات لهذه الحقول فهي empno NUMBER(4), ename VARCHAR2(10), job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2), deptno NUMBER(2) من الواضح أن كل حقل (عمود) له نوع مثلا empno نوعه number بحجم 4 أرقام وهذه الأنواع معا تشكل نوع سطر من الجدول emp وهذه هي النقطة الثانية مثال: الكود التالي مكرر، ففي المرة الثاني قمنا باستخدام rowtype لاحظ الفرق كيف أصبح حجمه أصغر declare v_empno emp.empno%type; v_ename emp.ename %type; v_job emp.job%type; v_mgr emp.mgr%type; v_hiredate emp.hiredate%type; v_sal emp.sal%type; v_comm emp.comm%type; v_deptno emp.deptno%type; begin select * into v_empno, v_ename, v_job, v_mgr, v_hiredate, v_sal, v_comm, v_deptno from emp where empno =7369; dbms_output.put_line('Eployee name is: '|| v_ename); end; ------------------------------------------ declare v_emptype emp%rowtype; /*by using rowtype*/ begin select * into v_emptype from emp where empno =7369; dbms_output.put_line('Eployee name is: '|| v_emptype.ename); end; في الكود السابق قمنا بوضع قيم السطر record or row لموظف واحد رقمه 7369 في متحول من نفس نوع الجدول emp ثم طباعة اسم الموظف. لكن ماذا لو أننا نريد أن نضع قيم مجموعة أسطر لعدة موظفين في متحول واحد؟؟؟ يشبه جدول أو عدة أسطر من الجدول emp لهذا يمكننا أن نستخدم العبارة is table of لبناء نوع جديد نعرفه نحن، كأن نقول مثلا أريد تعريف نوع بيانات جديد يشابه في بنيته نوع سطر في جدول emp ويمكن استخدام هذا النوع في كود plsql ومعالجة البيانات بشكل كتل bulk collect على سبيل المثال. وهذه هي النقطة الثالثة وبعد تعريف النوع الجديد فإنه يمكن استخدامه في متحول يدل عليه طبعا ستكون بنية المتحول كجدول يشبه الجدول emp ، ولكي نستطيع التمييز بين أسطر البيانات المخزنة في هذا المتحول يجب أن نربطه بمفتاح له عن طريق استخدام عبارة مثل index of integer وهذه هي النقطة الرابعة التي ذكرتها في سؤالك. استطيع وضع مثال لك لتوضيح ذلك أيضا لكني اعتقد أن بداية ردي على أول نقطتين أسهل من النقطة الثالثة والرابعة وستفهمه أكثر بمرور الأيام إن شاء الله عن طريق الممارسة والتعرض لكثير من طرق كتابة كود plsql، وستتذكر هذا الرد البسيط عند مواجتهك لمشكلة في الأداء بوجود عدد أسطر ضخم من البيانات تريد معالجتها، عندها ستضطر لقراءة أكثر تعمقا فلا تشغل بالك كثيرا بها الآن لكن أتمنى أن تكون الفكرة وصلت. تم تعديل 9 أبريل 2014 بواسطة sam_t 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.