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

استفسار فى انشاء Package


predator jaw

Recommended Posts

السلام عليكم

 

 

استفسار فى انشاء PACKAGE ولو فيه خطأ فى الكود أرجو الافادة

 

فى البداية أنا عندى 3 جمل كويرى   علشان يظهروا القيم  التالية

 

1- ProducedWater
2- HPT
3- SWCC

 

وهم كالتالى :- 



/*ProducedWater */



SELECT SUM (NVL (a.processed_wtr, 0)) processed_wtra,

to_char(a.data_date_g, 'MM/RRRR')



FROM wpd_main_station_read a, wpd_main_station b

WHERE a.company_no(+) = b.company_no

AND a.main_station_no(+) = b.main_station_no

AND a.data_date_g(+) BETWEEN TO_DATE ('01/01/2014', 'DD/MM/RRRR')

AND TO_DATE ('01/09/2014', 'DD/MM/RRRR')

AND a.company_no(+) = 1

AND b.active_flag = 1

AND b.d_r_print_flag = 1

GROUP BY to_char(a.data_date_g, 'MM/RRRR')

ORDER BY to_char(a.data_date_g, 'MM/RRRR') ASC;



-------------------------------------------------------------------------------------------------------------

/*Hpt*/



SELECT SUM(PROCESSED_WTR) FROM WPD_MAIN_STATION_READ 

WHERE COMPANY_NO = 1 



AND MAIN_STATION_NO IN (SELECT MAIN_STATION_NO FROM WPD_MAIN_STATION WHERE TO_HPT_FLAG = 1) 

AND DATA_DATE_G (+) BETWEEN TO_DATE ('01/01/2014', 'DD/MM/RRRR')

AND TO_DATE ('01/09/2014', 'DD/MM/RRRR');

--------------------------------------------------------------------------------------------------------------



/*SWCC*/





SELECT SUM(CF1 + CF2 + CF3 + CF4 + CF5 + CF6) FROM WPD_RAWDA_STATION_READ " +

WHERE COMPANY_NO = 1 AND DATA_DATE_G = (+) BETWEEN TO_DATE ('01/01/2014', 'DD/MM/RRRR')

AND TO_DATE BETWEEN TO_DATE ('01/01/2014', 'DD/MM/RRRR')

AND TO_DATE ('01/09/2014', 'DD/MM/RRRR');




----------------------------------------------------------------------------------------
 
 
ثانيا نقوم بانشاء باكيج وبداخله مجموعة فانكشن لحساب لمعادلات التالية 
 

1- ProducedWater
2- HPT
3- SWCC
4- SwccInCf_Current= SWCC-HPT

5- TotalProduction_Current= ProducedWater+ SwccInCf_Current
 
-----------------------------------------------------------------------------------------------------------------
ثالثا ودى الكود الخاص بالباكج وكنت محتاج  من الأخوة الزملاء لو فيه خطأ فى الكود نصححه
 

CREATE OR REPLACE PACKAGE BODY total_production_current
AS
   FUNCTION get_producedwater (p_from_date VARCHAR2, p_to_date VARCHAR2)
      RETURN NUMBER
   IS
      vn_producedwater   NUMBER;
   BEGIN
      SELECT SUM (NVL (a.processed_wtr, 0)) processed_wtra
        INTO vn_producedwater
        FROM wpd_main_station_read a, wpd_main_station b
       WHERE a.company_no(+) = b.company_no
         AND a.main_station_no(+) = b.main_station_no
         AND a.data_date_g(+) BETWEEN TO_DATE (p_from_date, 'DD/MM/RRRR')
                                  AND TO_DATE (p_to_date, 'DD/MM/RRRR')
         AND a.company_no(+) = 1
         AND b.active_flag = 1
         AND b.d_r_print_flag = 1;
         GROUP BY GROUP  BY to_char(a.data_date_g, 'MM/RRRR')
         ORDER BY to_char(a.data_date_g, 'MM/RRRR') ASC;




      RETURN vn_producedwater;
   EXCEPTION
      WHEN TOO_MANY_ROWS
      THEN
         RETURN 0;
      WHEN NO_DATA_FOUND
      THEN
         RETURN 0;
   END get_producedwater;




   FUNCTION get_hpt (p_from_date VARCHAR2, p_to_date VARCHAR2)
      RETURN NUMBER
   IS
      vn_hpt   NUMBER;
   BEGIN
      SELECT SUM (processed_wtr)
        INTO vn_hpt
        FROM wpd_main_station_read
       WHERE company_no = 1
         AND main_station_no IN (SELECT main_station_no
                                   FROM wpd_main_station
                                  WHERE to_hpt_flag = 1)
         AND data_date_g(+) BETWEEN TO_DATE (p_from_date, 'DD/MM/RRRR')
                                AND TO_DATE (p_to_date, 'DD/MM/RRRR');




      RETURN vn_hpt;
   EXCEPTION
      WHEN TOO_MANY_ROWS
      THEN
         RETURN 0;
      WHEN NO_DATA_FOUND
      THEN
         RETURN 0;
   END get_hpt;




   FUNCTION get_SWCC (p_from_date VARCHAR2, p_to_date VARCHAR2)
      RETURN NUMBER
   IS
      vn_SWCC   NUMBER;
   BEGIN


 SELECT SUM(CF1 + CF2 + CF3 + CF4 + CF5 + CF6) FROM WPD_RAWDA_STATION_READ " +
 WHERE COMPANY_NO = 1  AND DATA_DATE_G = (+) BETWEEN TO_DATE ('01/01/2014', 'DD/MM/RRRR')
                                  AND TO_DATE BETWEEN TO_DATE ('01/01/2014', 'DD/MM/RRRR')
                                  AND TO_DATE ('01/09/2014', 'DD/MM/RRRR'); 




      RETURN vn_SWCC;
   EXCEPTION
      WHEN TOO_MANY_ROWS
      THEN
         RETURN 0;
      WHEN NO_DATA_FOUND
      THEN
         RETURN 0;
   END get_SWCC;


   FUNCTION get_totalproduction_current (
      p_from_date   VARCHAR2,
      p_to_date     VARCHAR2
   )
      RETURN NUMBER
   IS
      l_producedwater     NUMBER;
      l_hpt               NUMBER;
      l_SWCC              NUMBER;
      l_SwccInCf_Current  NUMBER;
      l_total             NUMBER;
      
   BEGIN
      l_producedwater := get_producedwater (p_from_date, p_to_date);
      l_hpt := get_hpt (p_from_date, p_to_date);
      l_SWCC:= get_SWCC (p_from_date, p_to_date); 
      l_SwccInCf_Current:= l_SWCC-l_hpt;
      l_total := l_producedwater + l_hpt;
      RETURN l_total;
   EXCEPTION
      WHEN NO_DATA_FOUND
      THEN
         RETURN 0;
   END get_totalproduction_current;
END;
/
تم تعديل بواسطة Ahmad.Hasan
رابط هذا التعليق
شارك

معلش يا هندسة آسف في السؤال يعني ,

هو انت عايز تعذبنا وتعذب نفسك ليه , ما تنفذ وشوف فيها خطأ ولا لا, ولو في خطأ نصلحه معاك

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

eslam elbyaly  يا هندسة حضرتك أنا لا أقصد أعذب أى شخص معايا ولكن كنت جربت كود الباكج وظهر أخطاء وبعدل فيها حبيت رأى الأخوة فى المنتدى ان كتابة الكود سليمة
رابط هذا التعليق
شارك

خطأ فى اول سطر اسم الباكج Total_production_current

 

                    pls_00201    Total_production_current must be declared

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

المفروض انك تعرف الfunctions  and  procedures  في الpackage specification  بمعنى خد السطر الاول من الفانكشن او البروسيجر وضعه في ال specification ومتنساش semicolon

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

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

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

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

×   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.

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

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

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