بتاريخ: 8 أغسطس 200916 سنة comment_165838 هل يمكن احضار الجدول اوتوماتيك واستخدامه في select بهذا الشكلselect * from tableحيث ان table هنا متغير اي انه يكون اي شي employees او jobلنخيل مثلا ان هناك cursor يقوم بقراءة كل الجداول في الاسكيمة ففي هذه الحالة اريد كتابة لا اريد كتابة select * from employees بل اريد ان تتم كتابة اسم الجداول اوتوماتيك تقديم بلاغ
بتاريخ: 9 أغسطس 200916 سنة كاتب الموضوع comment_165909 المشكلة انه لو كتبت اي شي في جملة select غير موجوده في database يعطي error تقديم بلاغ
بتاريخ: 9 أغسطس 200916 سنة كاتب الموضوع comment_165912 لكي تتضح الامر اكثر هذا ما اريده 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 تقديم بلاغ
بتاريخ: 9 أغسطس 200916 سنة comment_165916 جرب هذا فى التودdeclareb number;beginEXECUTE IMMEDIATE'select 123 from '||:dual into b;dbms_output.put_line(;end; تقديم بلاغ
بتاريخ: 9 أغسطس 200916 سنة comment_165917 declare b number; begin EXECUTE IMMEDIATE'select 123 from '||:dual into b; dbms_output.put_line(; end; تقديم بلاغ
بتاريخ: 9 أغسطس 200916 سنة comment_165951 اخى الكريم الحل الذى تريده سهل وبسيط جدا - وهو جملة الاستعلام الاتية SELECT 'SELECT * FROM ' || TABLE_NAME FROM USER_TABLES; تقديم بلاغ
بتاريخ: 9 أغسطس 200916 سنة comment_165955 السلام عليكم أخي الكريم جرب هذا التعديل على البروسيدور الذي قمت بانشاؤه يمكنك هنا وضعه على اسكيما لايشترط ال 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; موفق تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.