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

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


هانى سند

Recommended Posts

السلام عليكم
إخواني هذه 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
بالتوفيق

to_date_arabic.txt

تم تعديل بواسطة hanon_OCP
رابط هذا التعليق
شارك

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

رابط هذا التعليق
شارك

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

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

رابط هذا التعليق
شارك

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

تم تعديل بواسطة hanon_OCP
رابط هذا التعليق
شارك

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

رابط هذا التعليق
شارك

  • بعد 4 أسابيع...

السلام عليكم
الأخ الكريم
ال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	


بالتوفيق

رابط هذا التعليق
شارك


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

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

  • بعد 2 أسابيع...

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

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

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

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

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

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