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

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

سكربت جديد لعرض امر انشاء الجدول


9 رد (ردود) على هذا الموضوع

#1 khaled

khaled

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 251 مشاركة

تاريخ المشاركة 16 March 2004 - 02:09 PM

اخوني الاعزاء السلام عليكم جميعاً
هذا هو اسكربت لعرض امر انشاء الجدول مع الـ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- سوف يسألك عن اسم الجدول ادخل EMP
4- سوف يكون الناتج كألاتي
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 .



تم إرفاق الملف مرة أخري
إدارة المنتدي

ملفات مرفقة


تم التعديل بواسطة هانى سند, 28 March 2007 - 11:06 AM.

خالد مبارك العوبثاني
اليمن-حضرموت
Email :Aboanter84@hotmail.com

#2 John

John

    عضو نشط

  • الأعضــاء
  • 387 مشاركة

تاريخ المشاركة 16 March 2004 - 03:15 PM

و الله مش عرفين نقول اية يا أستاذ خالد الدالة جربتها و تعمل بنجاح
شكراً على مجهودك الطيب
أخوك جون

تم التعديل بواسطة John, 16 March 2004 - 03:16 PM.

Johnwahba2002@hotmail.com

#3 salama11433

salama11433

    عضو نشط

  • الأعضــاء
  • 356 مشاركة

تاريخ المشاركة 17 March 2004 - 01:53 AM

كل رد بتقوله يا ستاذ / خالد جميل بجد :)
لا تبكى على ماضى لا يعود
salama ayad
samy32@msn.com
semsem11433@yahoo.com
Egypt - cairo

#4 Guest_المتابع_*

Guest_المتابع_*
  • الزائرين

تاريخ المشاركة 17 March 2004 - 09:55 AM

يعطيك الف عافية على مجهدك استاذ .خالد
وجزاك الله خير.... ونتظر اكثر.وبصراحة مسكت

#5 هانى سند

هانى سند

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 743 مشاركة

تاريخ المشاركة 17 March 2004 - 12:07 PM

مشكور اخ خالد

#6 الأسيف

الأسيف

    مشرف سابق وعضو مميز

  • فريق الإشراف
  • 203 مشاركة
  • الاسم الأول:أنس
  • اسم العائلة:القحطاني
  • البـلـد: Country Flag
  • الاهتمامات:إدارة و تقنية المعلومات الصحية
  • المنصب الحالي:IT Manager at Palestine Medical Center

تاريخ المشاركة 17 March 2004 - 04:32 PM

زادك الله أخونا خالد علماً وفهماً ..

#7 ayedh

ayedh

    عضو

  • الأعضــاء
  • 8 مشاركة

تاريخ المشاركة 22 March 2004 - 10:09 AM

جزاك الله خيرا على هذه المعلومات القيمة

#8 samirtarek

samirtarek

    عضو نشط

  • الأعضــاء
  • 306 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 22 March 2004 - 11:43 AM

بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
والحمد لله رب العالمين
والصلاة والسلام على الحبيب المصطفى
مشكوووووووووووووووووووووور
يا اخى لك جزيل الشكر والى الامام دوما
وبارك الله فيك ولك وعليك وجعله فى ميزان حسناتك
طارق مرشدى
--------------------------------------------------------------------------------------------------------
سبحان الله العظيم - سبحان الله وبحمده عدد خلقه ورضاء نفسه وزنة عرشه ومداد كلماته ولا حول ولا قوة الابالله

#9 wlahmad

wlahmad

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 252 مشاركة

تاريخ المشاركة 10 February 2007 - 10:43 PM

فتح الله عليك ونفع بك

#10 nhamzehn

nhamzehn

    مشترك

  • الأعضــاء
  • 187 مشاركة
  • الاهتمامات:المطالعة

تاريخ المشاركة 05 September 2007 - 06:23 PM

اكثر من راااااااااااااااااااااائع

بارك الله فيك
سبحان الله وبحمده سبحان الله العظيم

اللهم لك الحمد والشكر كما ينبغي لجلال وجهك وعظيم سلطانك