الانتقال إلى المحتوى

هل يوجد مصفوفات في أوراكل


أبو الروض

Recommended Posts

السلام عليكم ورحمة الله وبركاته
هل يوجد مصفوفات في أوراكل كما في لغات البرمجة الأخرى
ياريت مع الجواب مثال للفهم

طبعا ممكن يكون في مصفوفات حتى أكيد وهي ال Type
بس مثال عشان الواحد يعرف كيف ستخدمها

رابط هذا التعليق
شارك

  • بعد 3 أسابيع...

السلام عليكم ورحمة الله وبركاته

الجداول في pl/sql (المصفوفات) : وهي جداول تستخدم لتخزين سلسلة من الأرقام ويتم تعريف متغير من هذا النوع كما يلي

TYPE اسم المتغير IS TABLE OF نوع المتغير INDEX BY BINARY_INTEGER
مثال : هنا في الحلقة الأولي نقوم بضرب العدد i في نفسه (i*i) وتخزينه في المتغير cont برتبة i والحلقة الثانية لطباعة هذا المتغير
declare type v_cont is table of number(5) index by binary_integer ; i number(5); cont v_cont ;
begin for i in 1..10 loop cont(i) := i*i ; end loop ;
for i in 1..10 loop dbms_output.put_line(i||' * '||i||' = '||cont(i) ) ; end loop ; end ;
ملاحظة : حيث يمكن كتابة المعادلة السابقة بحلقة واحدة وتكون نفس النتيجة كما يلي
declare type v_cont is table of number(5) index by binary_integer ; i number(5) ; cont v_cont ;
begin for i in 1..10 loop cont(i) := i*i ; dbms_output.put_line(i||' * '||i||' = '||cont(i) ); end loop; end;
رابط هذا التعليق
شارك

  • بعد 3 أسابيع...

سأقوم بشرح بسيط لكيفية عمل Column و Varray

DECLARE
CURSOR course_cur IS
SELECT description
FROM course; TYPE course_type IS TABLE OF course.description%TYPE
INDEX BY BINARY_INTEGER;
course_tab course_type;

v_counter INTEGER := 0;
BEGIN FOR course_rec IN course_cur LOOP
v_counter := v_counter + 1;
course_tab(v_counter):= course_rec.description;
END LOOP;

FOR i IN 1..v_counter LOOP
DBMS_OUTPUT.PUT_LINE('course('||i||'): '||course_tab(i));
END LOOP;
END;
و شطارتك بقى ازاى تعرف تقسم العمود دة و تخلية مجموعة اعمدة ؟؟ ورينا بقى الشطارة يا بطل.

اما المثال الثانى فيقوم بعمل المصفوفة الأفقية ( الأسم المفضل لدى )

DECLARE
CURSOR name_cur IS
SELECT last_name
FROM student WHERE rownum <= 10;

TYPE last_name_type IS VARRAY(10) OF student.
last_name%TYPE;
last_name_varray last_name_type := last_name_type();

v_counter INTEGER := 0;
BEGIN FOR name_rec IN name_cur LOOP
v_counter := v_counter + 1;
last_name_varray.EXTEND;
last_name_varray(v_counter) := name_rec.last_name;
DBMS_OUTPUT.PUT_LINE ('last_name('||v_counter||'): '||
last_name_varray(v_counter));
END LOOP;
END;


و الله اعلم منى و منكم

Oracle ITself

رابط هذا التعليق
شارك

  • بعد 11 سنة...

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

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

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

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

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

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