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

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

صورة
- - - - -

Function لتحويل التاريخ الميلادي الي تاريخ هجري


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

#1 هانى سند

هانى سند

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

  • المجموعة الماسية
  • 743 مشاركة

تاريخ المشاركة 19 December 2006 - 12:36 PM

السلام عليكم
إخواني هذه function لتحويل التاريخ الميلادي الي هجري بالفورمات التي تريدها
ملحوظة : اليوم الزائد هو لمعالجة مشكلة انحراف التاريخ الهجري
ملحوظة كمان مرة ;): لا يمكن استدعاء هذه الfunction من جملة select لانها تحتوي علي جملة ddl
CREATE OR REPLACE function to_DATE_ARABIC( p_date in date,
					  p_fmt in varchar2 ) return varchar2
  as
	  l_return_string varchar2(255);
   v_cal varchar2(255):='arabic hijrah';
  begin
	  execute immediate
		 'alter session set nls_calendar = '''||V_cal||'''';
	  l_return_string := to_char( p_date+1, p_fmt );
	  execute immediate
		 'alter session set nls_calendar = ''Gregorian''';
l_return_string:=replace(l_return_string,'الثانية','الثانى');
	 return l_return_string;
  end;
/

لا تنسونا من الدعاء :D
بالتوفيق

ملفات مرفقة


تم التعديل بواسطة hanon_OCP, 29 January 2007 - 08:19 PM.


#2 mhm_man

mhm_man

    عضو

  • الأعضــاء
  • 9 مشاركة
  • الاسم الأول:محمد
  • اسم العائلة:الضبيبي
  • البـلـد: Country Flag

تاريخ المشاركة 19 December 2006 - 05:34 PM

مشكور اخي وجزاك الله خير
وحـــدووووه ( لا اله الا الله)

#3 walid99

walid99

    عضو

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

تاريخ المشاركة 22 December 2006 - 02:42 PM

الف شكر الك

بس يا ريت لو تشرحلي هالجملة execute immediate

#4 هانى سند

هانى سند

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

  • المجموعة الماسية
  • 743 مشاركة

تاريخ المشاركة 23 December 2006 - 10:50 AM

السلام عليكم
الأخ الكريم execute immediate هي oracle supplied procedure or command
لتنفيذ اوامر الddl أو الديناميك SQL بداخل pl/sql block فمعروف انه لا يمكن تنفيذ أوامر ddl بداخل اي function او pl/sql block و لكن هذه الprocedure تتييح لنا إمكانية عمل ذلك و أيضا تنفيذ الديناميك SQl و هي الجمل التي مثلا لا يعرف إسم الجدول او العمود الذي ستعمل عليه الا في الرن تايم
و هذه الprocedure موجودة بدأ من الإصدار 8i
بالتوفيق

#5 محمد سعيد

محمد سعيد

    عضو مميز

  • الأعضــاء
  • 534 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 25 December 2006 - 12:04 AM

السلام عليكم
عند تشغيل هذة الفنكشن تعطى رسالة الخطأ
PLS-00103: Encountered the symbol "IMMEDIATE" when expecting one of the following:

:= . ( @ % ;
The symbol ":= was inserted before "IMMEDIATE" to continue.

#6 هانى سند

هانى سند

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

  • المجموعة الماسية
  • 743 مشاركة

تاريخ المشاركة 25 December 2006 - 12:51 AM

السلام عليكم
الأخ محمد سعيد
انت فقط عند نسخ الفانكشن من البراوزر
فلت منك حرف غالبا هو ;
تأكد عند النسخ انك تأخذ كل الفانكشن
لقد حاولت إرفاق ملف بها و لكن هناك مشكلة في إرفاق الملفات و لا أستطيع إرفاقها
و عموما فقد رفعت السكريبت الخاص بها في هذه اللنك
من يرد تحميله فلحمله من هنا
من هنـــــــــا
بالتوفيق

تم التعديل بواسطة hanon_OCP, 25 December 2006 - 01:06 AM.


#7 عبدالله ندا

عبدالله ندا

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

  • المجموعة الماسية
  • 1,017 مشاركة
  • الاسم الأول:عبدالله
  • اسم العائلة:ندا
  • البـلـد: Country Flag
  • المنصب الحالي:Technical Applications Manager

تاريخ المشاركة 25 December 2006 - 01:15 AM

ملحوظه execute immediate تعمل علي الداتا بيز و ليس علي الفورمز يعني يجب انشائها علي الداتا بيز
سلام

في زمننا هذا .........................
ليس هناك قلب ناصع البياض ...
ولا قلب قاتم السواد ...
ولكن دائما
BLACK&WHITE

 

مع تحياتي
عبدالله ندا

http://anada.4shared.com

abdallahnada@hotmail.com 


#8 محمد سعيد

محمد سعيد

    عضو مميز

  • الأعضــاء
  • 534 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 25 December 2006 - 10:48 PM

طيب لو عايز انفذ جملة dynamic sql فى ال run time مينفعش استخدمها ولا استخدم forms_ddl ارجو التوضيح وجزاكم الله خيرا

#9 heavens

heavens

    مشترك

  • الأعضــاء
  • 59 مشاركة
  • البـلـد: Country Flag
  • الاهتمامات:Reading - Developing

تاريخ المشاركة 21 January 2007 - 08:44 PM

السلام عليكم
هذه الدالة رائعة و لكن اجد صعوبة فى فهم الدالة REPLACE
ارجو توضيح وظيفتها
جزاكم الله خيرا

#10 هانى سند

هانى سند

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

  • المجموعة الماسية
  • 743 مشاركة

تاريخ المشاركة 22 January 2007 - 01:47 AM

السلام عليكم
الأخ الكريم
الfunction replace هي function تستخدم لاستبدال حروف او كلمات من string
و وصفها كالتالي
l_return_string:=replace(l_return_string,'a','b');
1- هي تأخذ 3 بارمتر الاول و هو i_return_stringو هو النص الذي نريد الاستبدال فيه
2-و الثاني 'a'و هو النص الذي نريد استبداله
3-و الثالث و هو 'b'و هو النص الذي نريد ابداله مع 'a'
حيث ستقوم الفانكشن باستبدال كل نسخ الحرف 'a' بحرف b
و هذا المثال يوضح ذلك
SQL> select replace('abcdefaadd','a','b')
  2  from  dual;

REPLACE('A																						  
----------																						  
bbcdefbbdd	
بالتوفيق

#11 heavens

heavens

    مشترك

  • الأعضــاء
  • 59 مشاركة
  • البـلـد: Country Flag
  • الاهتمامات:Reading - Developing

تاريخ المشاركة 22 January 2007 - 10:40 PM

السلام عليكم
لم اقصد كيفية عمل تلك الدالة و لكن الهدف منها فى هذا الكود و لما لجئت اليها؟

#12 هانى سند

هانى سند

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

  • المجموعة الماسية
  • 743 مشاركة

تاريخ المشاركة 23 January 2007 - 12:14 PM

السلام عليكم
هذه الدالة رائعة و لكن اجد صعوبة فى فهم الدالة REPLACE
ارجو توضيح وظيفتها
جزاكم الله خيرا

السلام عليكم
الأخ العزيز سؤالك لم يوضح تساؤلك عن غرض استخدام replace function بداخل الكود
و انما فقط توضيح وظيفة الreplace function بشكل عام
عموما
فقد تم استخدام الfunction replace
لتغيير كلمة الثانية التي تظهر في يعض الشهور الي كلمة الثاني كما في شهر جمادي الثاني
حيث كان يظهر عندي بشكل جمادي الثانية
و هو ليس الإسم الصحيح للشهر
و ان كان الشهر يظهر عندك مظبوط فلا داعي لاستخدام الreplace
بالتوفيق

#13 zoghbour

zoghbour

    مشترك

  • الأعضــاء
  • 103 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 27 January 2007 - 11:15 AM

ارجو وضع مثال للبراميتر لكي تعمل الfuction

#14 wlahmad

wlahmad

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

  • المجموعة الماسية
  • 252 مشاركة

تاريخ المشاركة 10 February 2007 - 10:51 PM

يمن الله كتابك
ويسر حسابك
وبلغك مرادك