بتاريخ: 20 ديسمبر 200916 سنة comment_179861 السلام عليكم ,,ربما يكون شرحي للموضوع مبهم قليلا ً لذا ركزوا قليلا ً معي ..عندي جدولين :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إلى الآن لم أتوصل لحل هذا اللغز أرجو منكم المساعدةالشكر موصول مقدما ً تحيــاتي ,, تقديم بلاغ
بتاريخ: 21 ديسمبر 200916 سنة comment_179877 انت تعمل 2 كيرسور وتعمل متغير statment varchar2(32000) وتفتح الكرسور الاول وتحط create table ... ثم تفتح التانى وتحط الكولمز وطبعا تحط المسافات وخلافة وبعد متكون statment وتقفل الكرسورز تعمل execute immediate لجملة statment اللى هى حتكون الجداول تقديم بلاغ
بتاريخ: 21 ديسمبر 200916 سنة كاتب الموضوع comment_179899 شكرا ً اخي العزيز asd202 على الرد السريع هل ممكن تطبيق عملي على المثال المطروح في الموضوع ؟في الحقيقة انا OCA DBA وليس لدي ذلك الإلمام بال PLSQL شكرا ً جزيلا ً مقدما ً تقديم بلاغ
بتاريخ: 21 ديسمبر 200916 سنة comment_179921 اولا سكربت الجداول 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 ديسمبر 200916 سنة بواسطة asd202 تقديم بلاغ
بتاريخ: 22 ديسمبر 200916 سنة كاتب الموضوع comment_180007 شكرا ً 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 ديسمبر 200916 سنة بواسطة qaassim تقديم بلاغ
بتاريخ: 22 ديسمبر 200916 سنة كاتب الموضوع comment_180009 أو هذا الخطأ 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 تقديم بلاغ
بتاريخ: 22 ديسمبر 200916 سنة كاتب الموضوع comment_180050 اخي العزيز 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 ديسمبر 200916 سنة بواسطة qaassim تقديم بلاغ
بتاريخ: 22 ديسمبر 200916 سنة comment_180066 لن تحاتاج اى كولمز جديدة او تعديل بالروسيدرفقط ضيفالكونسترين بعد نوع العمود هكذاnumber,primary key(col1)اما الماتريلز توجد مواد كثيرة بالمنتدى وضعها كثير من الزملاء الافاضل تقديم بلاغ
بتاريخ: 22 ديسمبر 200916 سنة comment_180068 تابع هذا القسم http://www.araboug.org/ib/index.php?showforum=71 تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.