طاولات أوراكل العالمية المؤقتة
سؤال
لقد قمت بإنشاء جدول مؤقت عالمي. عندما أقوم بتنفيذ الكود كنصوص فردية ، فإنه يعمل بشكل جيد. ولكن عندما أقوم بتنفيذها كنص واحد في الضفدع ، لم يتم إنشاء أي سجل. كان هناك مجرد جدول مؤقت عالمي فارغ.
على سبيل المثال.
CREATE GLOBAL TEMPORARY TABLE TEMP_TRAN
(
COL1 NUMBER(9),
COL2 VARCHAR2(30),
COL3 DATE
) ON COMMIT PRESERVE ROWS
/
INSERT INTO TEMP_TRAN VALUES(1,'D',sysdate);
/
INSERT INTO TEMP_TRAN VALUES(2,'I',sysdate);
/
INSERT INTO TEMP_TRAN VALUES(3,'s',sysdate);
/
COMMIT;
عندما أقوم بتشغيل رمز واحد أعلاه بيان واحد في وقت يعمل بشكل جيد. ولكن عندما أقوم بتنفيذها كنص ، فإنه يعمل بشكل جيد ولكن لم يكن هناك سجلات في جدول مؤقت.
هل يمكن لأي شخص مساعدتي في هذا من فضلك؟
المحلول
منذ أن ذكرت صراحة ON COMMIT PRESERVE ROWS
, ، السبب الوحيد الذي يجعل الصفوف "تختفي" هو أن TOAD يستخدم أكثر من جلسة واحدة (أي أنك تنفذ البرنامج النصي مع الجلسة A والاستعلام عن الجدول مع الجلسة B - والتي سترى جدولًا فارغًا).
لا أستخدم Toad كثيرًا ، لكنني أعلم أنه يمكنك فتح العديد من الجلسات المستقلة مع هذه الأداة.
ماذا يحدث إذا وضعت الاستعلام SELECT * FROM TEMP_TRAN;
في نهاية البرنامج النصي الخاص بك مباشرة بعد الالتزام؟
نصائح أخرى
في بعض الأحيان ، ستحتاج إلى تحديث عرض البيانات داخل TOAD بحيث يعرض التغييرات داخل الجدول ضمن بيانات TabPage.