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

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

صورة
- - - - -

اسم الجدول اوتوماتيك


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

#1 esam_gm

esam_gm

    مشترك

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

تاريخ المشاركة 08 August 2009 - 12:17 PM

هل يمكن احضار الجدول اوتوماتيك واستخدامه في select بهذا الشكل

select * from table

حيث ان table هنا متغير اي انه يكون اي شي employees او job

لنخيل مثلا ان هناك cursor يقوم بقراءة كل الجداول في الاسكيمة

ففي هذه الحالة اريد كتابة لا اريد كتابة select * from employees بل اريد ان تتم كتابة اسم الجداول اوتوماتيك

#2 asd202

asd202

    عضو نشط

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

تاريخ المشاركة 08 August 2009 - 02:42 PM

حطها جوه execute immediate
على مستوى db
begin

for i in REVERSE 1..100000

loop

message('اللهم ارحمنا');

end loop;

end;

#3 esam_gm

esam_gm

    مشترك

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

تاريخ المشاركة 09 August 2009 - 09:28 AM

كيف سيكون شكل جملة select

#4 esam_gm

esam_gm

    مشترك

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

تاريخ المشاركة 09 August 2009 - 09:30 AM

المشكلة انه لو كتبت اي شي في جملة select غير موجوده في database يعطي error

#5 esam_gm

esam_gm

    مشترك

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

تاريخ المشاركة 09 August 2009 - 09:35 AM

لكي تتضح الامر اكثر هذا ما اريده

CREATE OR REPLACE PROCEDURE HRHR.tb_cl_vl (num_num IN NUMBER)
IS
n11 VARCHAR2 (500);

CURSOR c1
IS
SELECT table_name
FROM dba_tables
WHERE owner = 'HRHR';
BEGIN
OPEN c1;

LOOP
FETCH c1
INTO n11;

EXIT WHEN c1%NOTFOUND;

DECLARE
n_11 VARCHAR2 (500);

CURSOR c2
IS
SELECT column_name
FROM dba_tab_cols
WHERE table_name LIKE n11 AND column_name = num_num;
BEGIN
OPEN c2;

LOOP
FETCH c2
INTO n_11;

EXIT WHEN c2%NOTFOUND;

----------------------------------------
DECLARE
n_33 VARCHAR2 (500);

CURSOR c33
IS
SELECT COUNT (n_11)
FROM n11
WHERE n_11 = num_num;
BEGIN
OPEN c33;

LOOP
FETCH c33
INTO n_33;

EXIT WHEN c33%NOTFOUND;

INSERT INTO esam
(no1, no2
)
VALUES (n11, n_11
);

COMMIT;
END LOOP;

CLOSE c33;
END;
----------------------------------------
END LOOP;

CLOSE c2;
END;
END LOOP;

CLOSE c1;
-- COMMIT;
END;
/[يسار][/يسار]
الخطا هنا في جملة select

#6 asd202

asd202

    عضو نشط

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

تاريخ المشاركة 09 August 2009 - 10:06 AM

جرب هذا فى التود
declare
b number;
begin
EXECUTE IMMEDIATE'select 123 from '||:dual into b;
dbms_output.put_line(:);
end;
begin

for i in REVERSE 1..100000

loop

message('اللهم ارحمنا');

end loop;

end;

#7 asd202

asd202

    عضو نشط

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

تاريخ المشاركة 09 August 2009 - 10:07 AM

declare
b number;
begin EXECUTE IMMEDIATE'select 123 from '||:dual into b;
dbms_output.put_line(:);
end;

begin

for i in REVERSE 1..100000

loop

message('اللهم ارحمنا');

end loop;

end;

#8 abdou1984

abdou1984

    عضو نشط

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

تاريخ المشاركة 09 August 2009 - 02:47 PM

اخى الكريم
الحل الذى تريده سهل وبسيط جدا - وهو جملة الاستعلام الاتية
SELECT 'SELECT * FROM ' || TABLE_NAME FROM USER_TABLES;


#9 mustafagamiel

mustafagamiel

    مشرف قسم النماذج والمشاريع

  • فريق الإشراف
  • 2,095 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 09 August 2009 - 04:44 PM

السلام عليكم
أخي الكريم جرب هذا التعديل على البروسيدور الذي قمت بانشاؤه
يمكنك هنا وضعه على اسكيما لايشترط ال sys
CREATE OR REPLACE PROCEDURE tb_cl_vl (num_num IN NUMBER) IS
n11 VARCHAR2 (500);
CURSOR c1 IS SELECT table_name FROM user_tables ;
BEGIN OPEN c1;
LOOP
FETCH c1 INTO n11; EXIT WHEN c1%NOTFOUND;
DECLARE
n_11 VARCHAR2 (500);
CURSOR c2 IS SELECT column_name FROM user_tab_cols WHERE table_name LIKE n11 AND column_name = num_num;
BEGIN OPEN c2;
LOOP
FETCH c2 INTO n_11; EXIT WHEN c2%NOTFOUND;
----------------------------------------
DECLARE
n_33 VARCHAR2 (500);
CURSOR c33 IS SELECT COUNT (n_11) FROM user_tables where table_name like n11 and n_11 = num_num;
BEGIN OPEN c33;
LOOP
FETCH c33
INTO n_33; EXIT WHEN c33%NOTFOUND;
INSERT INTO esam (no1, no2) VALUES (n11, n_11);
COMMIT;
END LOOP;
CLOSE c33;
END;
----------------------------------------
END LOOP;
CLOSE c2;
END;
END LOOP;
CLOSE c1;
-- COMMIT;
END;



موفق

اللهم إن كان رزقي في الســــــــــماء فأنزله
وإن كان في الأرض فأخرجـه
وإن كان بعيدا فقربه وإن كان قريبا فيسره
وإن كان قليلا فكثره وإن كان كثيرا فبارك لي فيه

اللـــهم آمين
لا إله إلا الله وحده لاشريك له- له الملك وله الحمد وهو على كل شيء قدير
لا إله إلا أنت سبحانك-- إني كنت من الظالمين