একাধিক অপারেশন উইথ ব্যবহার করে


16

WITHবিবৃতিটি ব্যবহার করে একাধিক ক্রিয়াকলাপ চালানোর কোনও উপায় আছে কি ?

কিছুটা এইরকম

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

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

আমি কিছু ডেটা এবং এর গণনা নির্বাচন করতে চাই ...

উত্তর:


17

আপনার কাছে কেবল সিটিইর পরে একটি বিবৃতি থাকতে পারে। আপনি তবে আগের কোনওটির উপর ভিত্তি করে পরবর্তী সিটিই সংজ্ঞায়িত করতে পারেন:

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

আপনি যে সারিগুলি গণনা করার চেষ্টা করছেন এবং একই ফলাফল সেট থেকে রেফ কার্সারটি তৈরি করতে চেষ্টা করছেন তা নিচে নিম্নলিখিতগুলির একটি করা আরও উপযুক্ত হতে পারে:

  • একটি ভিউ তৈরি করুন
  • একটি টেম্প টেবিলে অস্থায়ী ফলাফলের মঞ্চ

অবশেষে, যদি ক্যোয়ারী যথেষ্ট সহজ হয় তবে এটি একবার গণনা এবং আবার কার্সারের জন্য লিখুন। সরলতা এবং পঠনযোগ্যতা এই ক্ষেত্রে DRY নীতি ট্রাম্প ।


10

না, একটি সিটিই বা withধারাটি একটি একক বিবরণের পরিধির মধ্যে সংজ্ঞায়িত করা হয়

কখনও কখনও আপনি একক বিবৃতি দিয়ে আশা করা থেকেও বেশি কিছু করতে পারেন যদিও, উদাহরণস্বরূপ:

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

অস্থায়ী ফলাফলের সেটগুলি সংরক্ষণ করার 'সাধারণ' ওরাকল উপায় (যদি আপনাকে করতে হয়) একটি জিটিটি:
GLOBAL TEMPORARYটেবিল
ব্যবহার করা ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.