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

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

أريد تابع لهذا الأمر


11 رد (ردود) على هذا الموضوع

#1 zakkar

zakkar

    عضو

  • الأعضــاء
  • 19 مشاركة

تاريخ المشاركة 31 May 2004 - 12:45 AM

هل يوجد تابع بيعمل إن كان العدد موجب بيخليه و إن كان سالب يجعله null
بسم الله وعلى بركة الله

#2 ابو صالح

ابو صالح

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,253 مشاركة
  • البـلـد: Country Flag
  • المنصب الحالي:(رحمه الله)

تاريخ المشاركة 31 May 2004 - 01:03 AM

يأخ zakkar

ماذا تقصد "بتابع" و ياريت توضع السؤال ،،،

<span style='font-size:11pt;line-height:100%'>
زكاة العلم نشرة

Oracle Certifed Expert, OCE RAC
Oracle Certified Professional OCP 9i,10g
ITIL v3

</span>


#3 zakkar

zakkar

    عضو

  • الأعضــاء
  • 19 مشاركة

تاريخ المشاركة 01 June 2004 - 12:39 AM

التابع هو function مثل abs
بسم الله وعلى بركة الله

#4 ابو صالح

ابو صالح

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,253 مشاركة
  • البـلـد: Country Flag
  • المنصب الحالي:(رحمه الله)

تاريخ المشاركة 01 June 2004 - 02:44 AM

نعم توجد هناك دالة جاهزة اسمها abs
abs(n) 

SELECT ABS(-15) "Absolute" FROM DUAL;
Absolute
----------
15


وطريقة اخرى :
ممكن تعمل دالة تستقبل متغير مثلا A
وتعمل شرط ، اذا كانت A اقل من صفر يقوم بجعل A = A * -1

<span style='font-size:11pt;line-height:100%'>
زكاة العلم نشرة

Oracle Certifed Expert, OCE RAC
Oracle Certified Professional OCP 9i,10g
ITIL v3

</span>


#5 zakkar

zakkar

    عضو

  • الأعضــاء
  • 19 مشاركة

تاريخ المشاركة 01 June 2004 - 08:13 PM

أريد Function إذا كان العدد موجب يبقى العدد كما هو وإن كان العدد سالب يصبح null
بسم الله وعلى بركة الله

#6 ابو صالح

ابو صالح

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,253 مشاركة
  • البـلـد: Country Flag
  • المنصب الحالي:(رحمه الله)

تاريخ المشاركة 02 June 2004 - 04:22 AM

ممكن تعمل Database trigger يقوم بتأكد من القيمة قبل ادخالها

create or replace trigger chk_sal
before insert on emp
for each row
begin
if :new.sal < 0 then
:new.sal := null;
end if;
end ;

<span style='font-size:11pt;line-height:100%'>
زكاة العلم نشرة

Oracle Certifed Expert, OCE RAC
Oracle Certified Professional OCP 9i,10g
ITIL v3

</span>


#7 iloveoracle

iloveoracle

    عضو

  • الأعضــاء
  • 4 مشاركة

تاريخ المشاركة 02 June 2004 - 09:26 PM

يمكن أن تستخدم التابع
case ... when ... then ... else ... end
راجع كتاب
Oracle9i SQL Reference
ملاحظة هذا التابع موجود فقط في الاصدار 9 من أوراكل
وهذا المثال يحل المشكلة

SQL> create table test(dummy number);

SQL> insert into test values (15);


SQL> insert into test values (-10);


SQL> commit;


SQL> select * from test;

DUMMY
----------
15
-10

select case when dummy>=0 then dummy
else null end
from test

CASEWHENDUMMY>=0THENDUMMYELSENULLEND
------------------------------------
15

#8 zakkar

zakkar

    عضو

  • الأعضــاء
  • 19 مشاركة

تاريخ المشاركة 02 June 2004 - 09:48 PM

مشكور أخي محب الأوراكل هذا ما أريده بالفعل
ومشكور أخي أبو صالح على التجاوب
بسم الله وعلى بركة الله

#9 iloveoracle

iloveoracle

    عضو

  • الأعضــاء
  • 4 مشاركة

تاريخ المشاركة 04 June 2004 - 02:02 AM

العفو على أاخي الكريم

#10 shadi barakat

shadi barakat

    عضو

  • الأعضــاء
  • 14 مشاركة

تاريخ المشاركة 02 August 2004 - 05:25 PM

استخدم decode او nvl2 بكل بساطه

#11 oss

oss

    مشترك

  • الأعضــاء
  • 98 مشاركة

تاريخ المشاركة 22 August 2004 - 06:04 PM

SELECT NULLIF(ABS(&num),-1*&num) FROM dual;

تم التعديل بواسطة oss, 22 August 2004 - 06:05 PM.

أخوكم في الله
oss ...

#12 super_funny2006

super_funny2006

    عضو

  • الأعضــاء
  • 12 مشاركة

تاريخ المشاركة 05 December 2007 - 07:02 PM

thank you very much


******************************************************************************
Am Cleanin Out My Closet
******************************************************************************