بتاريخ: 20 نوفمبر 200619 سنة comment_83444 السلام عليكمأنا بحاول أعمل function مثل sum أدخل لها إسم العمود فتخرج لى مجموع قيمه وعملت التاليه ولكنها لا تعمل وعايز شرط أخرج بيه من ال loop عندما تنتهى قيم العمود CREATE OR REPLACE FUNCTION hos_sum(col IN NUMBER) RETURN NUMBER IS b number:=0; BEGIN loop b:=b+col; exit when b>100; end loop; RETURN (; END hos_sum; إزاى أعمل loop تنتهى بنهاية القيم فى العمود (أيه الشرط اللى أستخدمه) لأنى مش مستخدم cursor لأنى لو إستخدمته مش هيطلع النتيجه المظبوطهتحياتى تم تعديل 20 نوفمبر 200619 سنة بواسطة here comes تقديم بلاغ
بتاريخ: 22 ديسمبر 200619 سنة comment_87129 انا شايف انه ال function غريب لانه ال sum لـ اي عمود في الDB مش محتاج function.مثلا بدك تعمل sum لعمود الرواتب بكل بساطه بتكتب select sum(sal) from emp تقديم بلاغ
بتاريخ: 22 ديسمبر 200619 سنة comment_87139 السلام عليكماتمنى ان حضرتك توضح السؤال اكترهل حضرتك عاوز تجيب مجموع قيمة عمود معين بس بدون استخدام دالة SUMيعنى تعمل دالة تحاكى SUMام حضرتك عاوز تعمل فانكشن تديها اى اسم عمود فترجع مجموع العمود دة تقديم بلاغ
بتاريخ: 26 ديسمبر 200619 سنة كاتب الموضوع comment_87920 السلام عليكماتمنى ان حضرتك توضح السؤال اكترهل حضرتك عاوز تجيب مجموع قيمة عمود معين بس بدون استخدام دالة SUMيعنى تعمل دالة تحاكى SUMام حضرتك عاوز تعمل فانكشن تديها اى اسم عمود فترجع مجموع العمود دة أيوه أنا عايز أعمل داله تعمل نفس عمل الداله sum عايز أعرف عملوها إزاى يعنىتحياتى تقديم بلاغ
بتاريخ: 28 ديسمبر 200619 سنة comment_88089 ارجو توضيح عمل الفنكشن التي كتبتها لكي استطيع المساعدةفلماذا تستخدم متغير من نوع رقمي كمدخل للفانكشن الست تريد اسم العمود أم انه معروف من قبلعلى فكرة الموضوع يجب استخدام الكيرسر فيه وسوف يعمل بشكل دقيق فقك جربFor i in(select col_name from table_name ) loopvar:=i.col_name +var;end loop;ولا تنسى اسناد قيمة الصفر للمتغير كقيمة افتراضية لأن الNull سيخرب كل شيءوالسلام عليكم ورحمة الله تقديم بلاغ
بتاريخ: 30 ديسمبر 200619 سنة كاتب الموضوع comment_88211 ارجو توضيح عمل الفنكشن التي كتبتها لكي استطيع المساعدةفلماذا تستخدم متغير من نوع رقمي كمدخل للفانكشن الست تريد اسم العمود أم انه معروف من قبلعلى فكرة الموضوع يجب استخدام الكيرسر فيه وسوف يعمل بشكل دقيق فقك جربFor i in(select col_name from table_name ) loopvar:=i.col_name +var;end loop;ولا تنسى اسناد قيمة الصفر للمتغير كقيمة افتراضية لأن الNull سيخرب كل شيءوالسلام عليكم ورحمة الله والله ياباشا أنا مش فاكر أنا عامله نوع رقمى ليه لأنى بقالى فتره فى الفورم والريبورت ثانياً بإستخدام الكيرسر ممكن عادى عمل فانكشن ولكن يجب إدخال إتنين باراميتر لها واحد لإسم الجدول والثانى لإسم العمود أما أنا فأريد أن أدخل لها باراميتر واحد لإسم العمود وأعمل سيليكت له من أى جدول أريده (مثل count و sum ) select hos(sal)from emp; مثلاًجزاك الله خيراً تقديم بلاغ
بتاريخ: 31 ديسمبر 200619 سنة comment_88229 السلام عليكموكل عام وانتم بخير على فكرة هذا الموضوع اخذ من وقتي الكثير لحتى استطعت حله وهو يعتمد على User-Defined Aggregate Functionsالتي تعتمد على بعض الفنكشنز وهيInitializes Iteratively Merge Terminates create or replace type CustomSumImpl as object ( sum NUMBER, static function ODCIAggregateInitialize(sctx IN OUT CustomSumImpl) return number, member function ODCIAggregateIterate(self IN OUT CustomSumImpl,value IN number) return number, member function ODCIAggregateTerminate(self IN CustomSumImpl,returnValue OUT number, flags IN number) return number, member function ODCIAggregateMerge(self IN OUT CustomSumImpl, ctx2 IN CustomSumImpl) return number ); create or replace type body CustomSumImpl is static function ODCIAggregateInitialize(sctx IN OUT CustomSumImpl) return number is begin sctx := CustomSumImpl(0); return ODCIConst.Success; end; member function ODCIAggregateIterate(self IN OUT CustomSumImpl, value IN number) return number is begin self.sum := self.sum + value; return ODCIConst.Success; end; member function ODCIAggregateTerminate(self IN CustomSumImpl, returnValue OUT number, flags IN number) return number is begin returnValue := self.sum; return ODCIConst.Success; end; member function ODCIAggregateMerge(self IN OUT CustomSumImpl, ctx2 IN CustomSumImpl) return number is begin self.sum := ctx2.sum; return ODCIConst.Success; end; end; create or replace function CustomSum (input NUMBER) RETURN NUMBER PARALLEL_ENABLE AGGREGATE USING CustomSumImpl; select CustomSum(sal) from emp; تحياتي تم تعديل 31 ديسمبر 200619 سنة بواسطة moody_4u تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.