qaassim بتاريخ: 20 ديسمبر 2009 تقديم بلاغ مشاركة بتاريخ: 20 ديسمبر 2009 السلام عليكم ,,ربما يكون شرحي للموضوع مبهم قليلا ً لذا ركزوا قليلا ً معي ..عندي جدولين :TAB_MASTER مخصص لأسماء الجداول Create Table Tab_master ( SN number, Tname varchar2(30) not null, constraint tab_SN_PK primary key (SN), constraint tab_Tname_U UNIQUE (Tname) ); Col_master مخصص لأسماء الأعمدة Create table Col_master ( ROW_ID number nut null, DN number not null, cname varchar2(30) defult value 'varchar2', constraint col_DN_FK foreign key (DN) refrences tab_master(SN); إذا ما أفترضنا أن البيانات كما الآتي بالجداول TAB_MASTER SN TNAME 1 'Employees' COL_MASTERإستنادا ً على الحقول الموجوده في الجدولين سيتكون بناء جدول جديدEmployees:EMP_NAME varchar2 emp_id numberإلى الآن لم أتوصل لحل هذا اللغز أرجو منكم المساعدةالشكر موصول مقدما ً تحيــاتي ,, اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
asd202 بتاريخ: 21 ديسمبر 2009 تقديم بلاغ مشاركة بتاريخ: 21 ديسمبر 2009 انت تعمل 2 كيرسور وتعمل متغير statment varchar2(32000) وتفتح الكرسور الاول وتحط create table ... ثم تفتح التانى وتحط الكولمز وطبعا تحط المسافات وخلافة وبعد متكون statment وتقفل الكرسورز تعمل execute immediate لجملة statment اللى هى حتكون الجداول اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
qaassim بتاريخ: 21 ديسمبر 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 21 ديسمبر 2009 شكرا ً اخي العزيز asd202 على الرد السريع هل ممكن تطبيق عملي على المثال المطروح في الموضوع ؟في الحقيقة انا OCA DBA وليس لدي ذلك الإلمام بال PLSQL شكرا ً جزيلا ً مقدما ً اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
asd202 بتاريخ: 21 ديسمبر 2009 تقديم بلاغ مشاركة بتاريخ: 21 ديسمبر 2009 (معدل) اولا سكربت الجداول Create Table Tab_master ( SN number, Tname varchar2(30) not null, constraint tab_SN_PK primary key (SN), constraint tab_Tname_U UNIQUE (Tname) ); Create table Col_master ( ROW_ID number not null, DN number not null, cname varchar2(30) , ctype varchar2(30) default 'varchar2', constraint col_DN_FK foreign key (DN) references tab_master(SN) ); CREATE OR REPLACE procedure tables_creator is cursor tab is select * from Tab_master where exists(select 1 from Col_master where sn=dn); cursor col(p_sn number) is select * from Col_master where dn=p_sn; create_statment varchar2(32000); begin for cur1 in tab loop create_statment:='create table '||cur1.tname||'('; for cur2 in col(cur1.sn) loop create_statment:=create_statment||cur2.cname||' '||cur2.ctype||' ,'; end loop; create_statment:=trim(',' from create_statment); create_statment:=create_statment||') '; execute immediate (create_statment); commit; create_statment:=null; end loop; end; تمت تجربتها بنجاح فقط املا بالجدال المراد انشائها والعواميد ثم استدعى البروسيدر تم تعديل 21 ديسمبر 2009 بواسطة asd202 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
qaassim بتاريخ: 22 ديسمبر 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 22 ديسمبر 2009 (معدل) شكرا ً ASD202 جعله الله في ميزان حسناتك ..أعلم انني أطلت كثيرا ً ولكن تحملني قليلا ً عند إستدعاء ال PROSEDURE يظهر لي الآتي BEGIN tables_creator; END; * ERROR at line 1: ORA-00906: missing left parenthesis ORA-06512: at "HR.TABLES_CREATOR", line 11 ORA-06512: at line 1 تم تعديل 22 ديسمبر 2009 بواسطة qaassim اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
qaassim بتاريخ: 22 ديسمبر 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 22 ديسمبر 2009 أو هذا الخطأ ERROR at line 1: ORA-06550: line 1, column 7: PLS-00201: identifier 'TABLES_CREATOR' must be declared ORA-06550: line 1, column 7: PL/SQL: Statement ignored اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
asd202 بتاريخ: 22 ديسمبر 2009 تقديم بلاغ مشاركة بتاريخ: 22 ديسمبر 2009 طيب اتاكد انها اتكريتت فى نفس الاسكيما اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
qaassim بتاريخ: 22 ديسمبر 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 22 ديسمبر 2009 (معدل) اخي العزيز ASD202 تم حل المشكله .. المشكله كانت في البيانات المجوده في جدول COL_MASTER وتحديدا ً في Column type فلم اقم بإدخال ال Data type الصحيح ,إضافه : ماذا لو أردت أن أضيف خاصية Primary Key للجدول المراد إنشائه ؟و forign Key أيضا ؟عمود إضافي لل PK و لل FK في جدول ال COL_MASTER او ماذا تقترح أن أضيف للجداول لإحتواء هذه الخاصية الجديدة ؟ Create table Col_master ( ROW_ID number not null, DN number not null, cname varchar2(30) , ctype varchar2(30) default 'varchar2', PK varchar2(20), FK varchar2(20), constraint col_DN_FK foreign key (DN) references tab_master(SN) ); كيف سيكون ال PROSEDURE ?أريد أن أتعلم ال PLSQL بسرعه بأي المواد تنصحني ؟ أفضل المواد باللغه الإنجليزيةشكرا ً جزيلا ً تحيــاتي تم تعديل 22 ديسمبر 2009 بواسطة qaassim اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
asd202 بتاريخ: 22 ديسمبر 2009 تقديم بلاغ مشاركة بتاريخ: 22 ديسمبر 2009 لن تحاتاج اى كولمز جديدة او تعديل بالروسيدرفقط ضيفالكونسترين بعد نوع العمود هكذاnumber,primary key(col1)اما الماتريلز توجد مواد كثيرة بالمنتدى وضعها كثير من الزملاء الافاضل اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
asd202 بتاريخ: 22 ديسمبر 2009 تقديم بلاغ مشاركة بتاريخ: 22 ديسمبر 2009 تابع هذا القسم http://www.araboug.org/ib/index.php?showforum=71 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.