predator jaw بتاريخ: 5 سبتمبر 2014 تقديم بلاغ مشاركة بتاريخ: 5 سبتمبر 2014 (معدل) السلام عليكم استفسار فى انشاء PACKAGE ولو فيه خطأ فى الكود أرجو الافادة فى البداية أنا عندى 3 جمل كويرى علشان يظهروا القيم التالية 1- ProducedWater2- HPT3- 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- ProducedWater2- HPT3- SWCC4- SwccInCf_Current= SWCC-HPT5- 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; / تم تعديل 5 سبتمبر 2014 بواسطة Ahmad.Hasan اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
eslam elbyaly بتاريخ: 5 سبتمبر 2014 تقديم بلاغ مشاركة بتاريخ: 5 سبتمبر 2014 معلش يا هندسة آسف في السؤال يعني , هو انت عايز تعذبنا وتعذب نفسك ليه , ما تنفذ وشوف فيها خطأ ولا لا, ولو في خطأ نصلحه معاك اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
predator jaw بتاريخ: 5 سبتمبر 2014 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 5 سبتمبر 2014 eslam elbyaly يا هندسة حضرتك أنا لا أقصد أعذب أى شخص معايا ولكن كنت جربت كود الباكج وظهر أخطاء وبعدل فيها حبيت رأى الأخوة فى المنتدى ان كتابة الكود سليمة اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
technologist IT Engineer بتاريخ: 5 سبتمبر 2014 تقديم بلاغ مشاركة بتاريخ: 5 سبتمبر 2014 طيب ما الأخطاء التي ظهرت لك؟ اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
predator jaw بتاريخ: 7 سبتمبر 2014 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 7 سبتمبر 2014 خطأ فى اول سطر اسم الباكج Total_production_current pls_00201 Total_production_current must be declared اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
visiterman بتاريخ: 10 سبتمبر 2014 تقديم بلاغ مشاركة بتاريخ: 10 سبتمبر 2014 المفروض انك تعرف الfunctions and procedures في الpackage specification بمعنى خد السطر الاول من الفانكشن او البروسيجر وضعه في ال specification ومتنساش semicolon اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
eslam elbyaly بتاريخ: 10 سبتمبر 2014 تقديم بلاغ مشاركة بتاريخ: 10 سبتمبر 2014 مصيبة ليكون مفيش specification يا هندسة ؟ اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.