بتاريخ: 16 مارس 200421 سنة comment_3421 اخوني الاعزاء السلام عليكم جميعاًهذا هو اسكربت لعرض امر انشاء الجدول مع الـConstraint الخاص به , وهذا ينفع في حالة انشاء عدة جداول في داتابيس معينه ونت تريد ان يكون لديك text file يحوي كل اوامر انشاء الجدوال حتى تتمكن من تنفيذها في اي داتابيس اخرى .عند تنفيذ هذا السكربت في الـsql * plus سوف يسألك عن اسم الجدول الذي تريد ان تحصل على امر انشاءه وعند اعطائه اسم الجدول سوف يعطيك امر انشاء ذلك الجدول UNDEFINE TABLE_NAME; -- CREATE THE TABLE SCRIPT SELECT 'CREATE TABLE ' || T.table_name || ' ( ' FROM USER_TABLES T WHERE T.table_name=UPPER('&&table_name') UNION ALL SELECT * FROM ( SELECT DECODE(ROWNUM, 1, ' ', ' , ') || T.column_name || ' ' || T.data_type || DECODE (t.data_type ,'NUMBER',DECODE(T.data_scale,'','', '(' || T.data_precision || ',' || T.data_scale || ')'),'VARCHAR2','('||t.data_length||')','DATE','') || DECODE (T.NULLABLE,'N',' NOT NULL') FROM USER_TAB_COLUMNS T WHERE T.table_name=UPPER('&&table_name') ORDER BY T.COLUMN_ID ) UNION ALL SELECT ' ); ' FROM DUAL UNION ALL SELECT 'ALTER TABLE ' || T.table_name ||' ADD CONSTRAINT ' || T.constraint_name || Decode ( t.constraint_type,'P',' PRIMARY KEY ' , 'R', ' FOREIGN KEY ' || '(' ||(SELECT CT.column_name FROM USER_CONS_COLUMNS CT WHERE CT.constraint_name=T.r_constraint_name ) || ') '||' REFERENCES ' || (SELECT TABLE_NAME FROM USER_CONS_COLUMNS UCT WHERE UCT.constraint_name=T.r_constraint_name) ) || (SELECT ' ('|| c.column_name ||') ' From user_cons_columns c where c.constraint_name=t.constraint_name ) || '; ' AS "CREATION SCRIPT" FROM user_constraints T WHERE table_name=UPPER('&&table_name') / مثال :افرض ان هذا السكربت موجود داخل ملف اسمه table_Creation.sqlيتم تنفيذه كالاتي 1- ادخل الـsql * plus 2- اكتب c:\table_Creation.sql@3- سوف يسألك عن اسم الجدول ادخل EMP4- سوف يكون الناتج كألاتي CREATE TABLE EMP ( EMPNO NUMBER(4,0) NOT NULL , ENAME VARCHAR2(10) , JOB VARCHAR2(9) , MGR NUMBER(4,0) , HIREDATE DATE , SAL NUMBER(7,2) , COMM NUMBER(7,2) , DEPTNO NUMBER(2,0) ); ALTER TABLE EMP ADD CONSTRAINT PK_EMP PRIMARY KEY (EMPNO); ALTER TABLE EMP ADD CONSTRAINT FK_DEPTNO FOREIGN KEY (DEPTNO) REFERENCES DEPT (DEPTNO); اما اذا اعطيناه الجدول Dept فسوف يعطي الناتج الاتي CREATE TABLE DEPT ( DEPTNO NUMBER(2,0) NOT NULL , DNAME VARCHAR2(14) , LOC VARCHAR2(13) ); ALTER TABLE DEPT ADD CONSTRAINT PK_DEPT PRIMARY KEY (DEPTNO); وبهذه الطريقه تستطيع ان تعمل ملف يحوي اوامر انشاء كل الجداول الموجدوه في الداتابيس , بحيث تتمكن من تنفيذ هذا الملف في اي داتابيس اخرى لكي تحصل على نفس الجدال .ملاحظه :هذا اسكربت من اجتهادي ويمكن ان يكون به بعض العيوب او الاخطى , لذلك اتمنى من الاخوه المشاركه بالتعديل اذا كان هناك اي خطى كما احب ان انوه ان هذا الاسكربت يمكن ان يطور بحيث نضعه في procedure لكي يعطينى ملف بكل الجداول والـpackages والـTriggers وغيرها من الـdatabase objects .تم إرفاق الملف مرة أخري إدارة المنتدي TABLE_CREATION.TXT تم تعديل 28 مارس 200718 سنة بواسطة هانى سند تقديم بلاغ
بتاريخ: 16 مارس 200421 سنة comment_3425 و الله مش عرفين نقول اية يا أستاذ خالد الدالة جربتها و تعمل بنجاحشكراً على مجهودك الطيبأخوك جون تم تعديل 16 مارس 200421 سنة بواسطة John تقديم بلاغ
بتاريخ: 17 مارس 200421 سنة comment_3477 يعطيك الف عافية على مجهدك استاذ .خالد وجزاك الله خير.... ونتظر اكثر.وبصراحة مسكت تقديم بلاغ
بتاريخ: 22 مارس 200421 سنة comment_3783 بسم الله الرحمن الرحيمالسلام عليكم ورحمة الله وبركاتهوالحمد لله رب العالمين والصلاة والسلام على الحبيب المصطفى مشكووووووووووووووووووووووريا اخى لك جزيل الشكر والى الامام دوماوبارك الله فيك ولك وعليك وجعله فى ميزان حسناتكطارق مرشدى--------------------------------------------------------------------------------------------------------سبحان الله العظيم - سبحان الله وبحمده عدد خلقه ورضاء نفسه وزنة عرشه ومداد كلماته ولا حول ولا قوة الابالله تقديم بلاغ
بتاريخ: 5 سبتمبر 200718 سنة comment_109277 اكثر من راااااااااااااااااااااائع بارك الله فيك تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.