الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

حد يساعدنى فى عمل function مثل sum

Featured Replies

بتاريخ:

السلام عليكم
أنا بحاول أعمل 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 لأنى لو إستخدمته مش هيطلع النتيجه المظبوطه

تحياتى

تم تعديل بواسطة here comes

  • بعد 2 أسابيع...
بتاريخ:

while b>100 loop
------------
----------
exit;

بتاريخ:

اضف
exit where b % not found;
end loop

  • بعد 4 أسابيع...
بتاريخ:

انا شايف انه ال function غريب

لانه ال sum لـ اي عمود في الDB مش محتاج function.

مثلا بدك تعمل sum لعمود الرواتب بكل بساطه بتكتب select sum(sal) from emp

بتاريخ:

السلام عليكم

اتمنى ان حضرتك توضح السؤال اكتر

هل حضرتك عاوز تجيب مجموع قيمة عمود معين بس بدون استخدام دالة SUM

يعنى تعمل دالة تحاكى SUM

ام حضرتك عاوز تعمل فانكشن تديها اى اسم عمود فترجع مجموع العمود دة

بتاريخ:
  • كاتب الموضوع

السلام عليكم

اتمنى ان حضرتك توضح السؤال اكتر

هل حضرتك عاوز تجيب مجموع قيمة عمود معين بس بدون استخدام دالة SUM

يعنى تعمل دالة تحاكى SUM

ام حضرتك عاوز تعمل فانكشن تديها اى اسم عمود فترجع مجموع العمود دة

أيوه أنا عايز أعمل داله تعمل نفس عمل الداله sum عايز أعرف عملوها إزاى يعنى
تحياتى
بتاريخ:

ارجو توضيح عمل الفنكشن التي كتبتها لكي استطيع المساعدة
فلماذا تستخدم متغير من نوع رقمي كمدخل للفانكشن الست تريد اسم العمود أم انه معروف من قبل
على فكرة الموضوع يجب استخدام الكيرسر فيه وسوف يعمل بشكل دقيق فقك جرب
For i in(select col_name from table_name ) loop
var:=i.col_name +var;
end loop;
ولا تنسى اسناد قيمة الصفر للمتغير كقيمة افتراضية لأن الNull سيخرب كل شيء
والسلام عليكم ورحمة الله

بتاريخ:
  • كاتب الموضوع

ارجو توضيح عمل الفنكشن التي كتبتها لكي استطيع المساعدة
فلماذا تستخدم متغير من نوع رقمي كمدخل للفانكشن الست تريد اسم العمود أم انه معروف من قبل
على فكرة الموضوع يجب استخدام الكيرسر فيه وسوف يعمل بشكل دقيق فقك جرب
For i in(select col_name from table_name ) loop
var:=i.col_name +var;
end loop;
ولا تنسى اسناد قيمة الصفر للمتغير كقيمة افتراضية لأن الNull سيخرب كل شيء
والسلام عليكم ورحمة الله


والله ياباشا أنا مش فاكر أنا عامله نوع رقمى ليه لأنى بقالى فتره فى الفورم والريبورت
ثانياً بإستخدام الكيرسر ممكن عادى عمل فانكشن ولكن يجب إدخال إتنين باراميتر لها واحد لإسم الجدول والثانى لإسم العمود أما أنا فأريد أن أدخل لها باراميتر واحد لإسم العمود وأعمل سيليكت له من أى جدول أريده (مثل count و sum )
select hos(sal)from emp; مثلاً
جزاك الله خيراً
بتاريخ:

السلام عليكم
وكل عام وانتم بخير :)
على فكرة هذا الموضوع اخذ من وقتي الكثير لحتى استطعت حله وهو يعتمد على
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;



:) :rolleyes: :blink:

تحياتي

تم تعديل بواسطة moody_4u

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

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

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

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

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

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.