it-swarm.asia

عمليات متعددة باستخدام

هل هناك طريقة لتنفيذ عمليات متعددة باستخدام عبارة WITH؟

شيء مثل

WITH T AS
(
  SELECT * FROM Tbl
)
BEGIN
  OPEN P_OUTCURSOR FOR
    SELECT * FROM T;

  SELECT COUNT(*) INTO P_OUTCOUNT FROM T;
END;

أريد اختيار بعض البيانات وحسابها ...

16
BrunoLM

يمكنك الحصول على بيان واحد فقط بعد CTE. ومع ذلك ، يمكنك تحديد CTEs اللاحقة بناءً على السابق:

WITH t1 AS (
   SELECT a, b, c
   FROM table1
)
, t2 AS (
   SELECT b
   FROM t1
   WHERE a = 5
)
SELECT *
FROM t2;

بالنظر إلى أنك تحاول حساب الصفوف وتعبئة مؤشر المرجع من نفس مجموعة النتائج ، فقد يكون من الأنسب القيام بأحد الإجراءات التالية:

  • إنشاء طريقة عرض
  • مرحلة النتائج المؤقتة في جدول مؤقت

أخيرًا ، إذا كان الاستعلام بسيطًا بما يكفي ، فقط اكتبه مرة واحدة للعد ومرة ​​أخرى للمؤشر. البساطة وسهولة القراءة مبدأ جاف في هذه الحالة.

17
Nick Chammas

لا ، تم تحديد بند CTE أو withضمن نطاق عبارة واحدة

في بعض الأحيان ، يمكنك القيام بأكثر مما قد تتوقعه باستخدام عبارة واحدة ، على سبيل المثال:

with w as (select v from t3)
insert all into t1(v) values(v)
           into t2(v) values(v)
select v from w;

تتمثل طريقة Oracle "العادية" لتخزين مجموعات النتائج المؤقتة (إذا كان عليك ذلك) في استخدام GTT:
GLOBAL TEMPORARY طاولة
.

10
Jack says try topanswers.xyz