الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

إنشاء جداول ديناميكية

Featured Replies

بتاريخ:

السلام عليكم ,,

ربما يكون شرحي للموضوع مبهم قليلا ً لذا ركزوا قليلا ً معي ..

عندي جدولين :

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

post-84389-1261352527_thumb.jpg


إستنادا ً على الحقول الموجوده في الجدولين سيتكون بناء جدول جديد
Employees:
EMP_NAME varchar2 emp_id number




إلى الآن لم أتوصل لحل هذا اللغز :)

أرجو منكم المساعدة

الشكر موصول مقدما ً


تحيــاتي ,,

بتاريخ:

انت تعمل 2 كيرسور
وتعمل متغير statment varchar2(32000)
وتفتح الكرسور الاول وتحط create table ...
ثم تفتح التانى وتحط الكولمز وطبعا تحط المسافات وخلافة
وبعد متكون statment
وتقفل الكرسورز تعمل
execute immediate 
لجملة statment
اللى هى حتكون الجداول

بتاريخ:
  • كاتب الموضوع

شكرا ً اخي العزيز asd202 على الرد السريع

هل ممكن تطبيق عملي على المثال المطروح في الموضوع ؟

في الحقيقة انا OCA DBA وليس لدي ذلك الإلمام بال PLSQL

شكرا ً جزيلا ً مقدما ً

بتاريخ:

اولا سكربت الجداول 
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;

تمت تجربتها بنجاح فقط املا بالجدال المراد انشائها والعواميد ثم استدعى البروسيدر

تم تعديل بواسطة asd202

بتاريخ:
  • كاتب الموضوع

شكرا ً 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

تم تعديل بواسطة qaassim

بتاريخ:
  • كاتب الموضوع

أو هذا الخطأ

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 تم حل المشكله ..

المشكله كانت في البيانات المجوده في جدول 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 بسرعه بأي المواد تنصحني ؟ أفضل المواد باللغه الإنجليزية

شكرا ً جزيلا ً
تحيــاتي

تم تعديل بواسطة qaassim

بتاريخ:

لن تحاتاج اى كولمز جديدة او تعديل بالروسيدر
فقط ضيف
الكونسترين بعد نوع العمود هكذا
number,primary key(col1)

اما الماتريلز توجد مواد كثيرة بالمنتدى وضعها كثير من الزملاء الافاضل

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

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

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

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

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

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.