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

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


esam_gm

Recommended Posts

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

select * from table

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

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

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

رابط هذا التعليق
شارك

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

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

رابط هذا التعليق
شارك

السلام عليكم
أخي الكريم جرب هذا التعديل على البروسيدور الذي قمت بانشاؤه
يمكنك هنا وضعه على اسكيما لايشترط ال 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;




موفق

رابط هذا التعليق
شارك

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

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

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

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

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

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