<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های ابوالفضل فاتحی</title>
        <link>https://virgool.io/feed/@abolfazl.fatehi07</link>
        <description>عاشق برنامه نویسی</description>
        <language>fa</language>
        <pubDate>2026-06-30 19:19:00</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/559496/avatar/Ha01eh.jpg?height=120&amp;width=120</url>
            <title>ابوالفضل فاتحی</title>
            <link>https://virgool.io/@abolfazl.fatehi07</link>
        </image>

                    <item>
                <title>معرفی تابع RANK در اوراکل</title>
                <link>https://virgool.io/@abolfazl.fatehi07/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D8%AA%D8%A7%D8%A8%D8%B9-rank-%D8%AF%D8%B1-%D8%A7%D9%88%D8%B1%D8%A7%DA%A9%D9%84-sm6obt45lmkl</link>
                <description>فرض کنیم قصد داریم کارمندان شرکت را براساس میزان حقوق دریافتی رتبه بندی کنیم. این کار را با دستور RANK انجام می دهیم:خروجی عبارت است از:در RANK() OVER(ORDER BY SALARY DESC) AS RNK میزان حقوق دریافتی به صورت نزولی مرتب شده است.</description>
                <category>ابوالفضل فاتحی</category>
                <author>ابوالفضل فاتحی</author>
                <pubDate>Sat, 02 Apr 2022 19:44:53 +0430</pubDate>
            </item>
                    <item>
                <title>کار با UTL_MATCH.edit_distance در اوراکل</title>
                <link>https://virgool.io/@abolfazl.fatehi07/%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-utlmatcheditdistance-%D8%AF%D8%B1-%D8%A7%D9%88%D8%B1%D8%A7%DA%A9%D9%84-flhmm3is2w7e</link>
                <description>در این پست در مورد تابعی صحبت می شود که برای سنجش میزان شباهت متغیر های رشته ای استفاده می شود. مرحله اول: یک جدول با نام HR.MATCH_TAB می سازیم.مرحله دوم: باید داده ها را وارد جدول کنیم.با دستور زیر میزان شباهت بین دو ستون نمایش داده می شود:و خروجی کد بالا به شکل زیر است:با اجرای کد زیر درصد تفاوت نمایش داده می شود:خروجی کد بالا عبارت است از:می توان شرط WHERE را در دستور زیر اضافه کرد:در کد بالا میزان شباهت های بالای 90 درصد نمایش داده شده است:  </description>
                <category>ابوالفضل فاتحی</category>
                <author>ابوالفضل فاتحی</author>
                <pubDate>Thu, 26 Aug 2021 19:34:04 +0430</pubDate>
            </item>
                    <item>
                <title>مثالی از PACKAGE در اوراکل</title>
                <link>https://virgool.io/@abolfazl.fatehi07/%D9%85%D8%AB%D8%A7%D9%84%DB%8C-%D8%A7%D8%B2-package-%D8%AF%D8%B1-%D8%A7%D9%88%D8%B1%D8%A7%DA%A9%D9%84-bpmbxfzwbd1g</link>
                <description>در این مثال specification عبارت است از:در ادامه BODY عبارت است از:در واقع این PACKAGE دو یا سه عدد به عنوان ورودی از کاربر میگیرد و جمع آنها را محاسبه می کند.در این  PACKAGE دو تابع با نام یکسان ADDNUM تعریف شده است. اولین تابع دو عدد ورودی را گرفته و جمع آنها را بر می گرداند. دومین تابع سه عدد ورودی را گرفته و جمع آنها را بر میگرداند.   </description>
                <category>ابوالفضل فاتحی</category>
                <author>ابوالفضل فاتحی</author>
                <pubDate>Mon, 23 Aug 2021 18:12:04 +0430</pubDate>
            </item>
                    <item>
                <title>ایجاد یک PROCEDURE با پارامترهای ورودی و خروجی</title>
                <link>https://virgool.io/@abolfazl.fatehi07/%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%DB%8C%DA%A9-procedure-%D8%A8%D8%A7-%D9%BE%D8%A7%D8%B1%D8%A7%D9%85%D8%AA%D8%B1%D9%87%D8%A7%DB%8C-%D9%88%D8%B1%D9%88%D8%AF%DB%8C-%D9%88-%D8%AE%D8%B1%D9%88%D8%AC%DB%8C-m5zgva9nojrd</link>
                <description>جدول زیر را در نظر بگیرید:قصد داریم PROCEDURE ایی بنویسیم که پارامتر شماره کارمندی و میزان افزایش حقوق را گرفته و حقوق نهایی را  برگرداند. حال برای اجرای PROCEDURE بالا دستور زیر را اجرا می کنیم(کلید F5):در ادامه PROCEDURE زیر را اجرا می کنیم:پس از فشردن کلید F9 پنجره زیر باز می شود.خروجی عبارت است از:همان طور که در تصویر زیر مشخص است حقوق کارمند با شماره کارمندی 201 به میزان 500 واحد افزایش پیدا کرده است. </description>
                <category>ابوالفضل فاتحی</category>
                <author>ابوالفضل فاتحی</author>
                <pubDate>Mon, 23 Aug 2021 17:52:07 +0430</pubDate>
            </item>
                    <item>
                <title>مثالی از PACKAGE در اوراکل</title>
                <link>https://virgool.io/@abolfazl.fatehi07/%D9%85%D8%AB%D8%A7%D9%84%DB%8C-%D8%A7%D8%B2-package-%D8%AF%D8%B1-%D8%A7%D9%88%D8%B1%D8%A7%DA%A9%D9%84-mmrjjro4jomv</link>
                <description>ابتدا جدول emp را به  صورت زیر ایجاد می کنیم:در ادامه قسمت SPECIFICATION به صورت زیر تعریف می کنیم:در این کد  دو PROCEDURE تعریف کردیم. یکیPROCEDURE HIRE و یکی PROCEDURE FIRE . در ادامه قسمت BODY را بصورت زیر تعریف می کنیم:در این کد قسمت اجرایی دو PROCEDURE تعریف شده است: فرایند استخدام و خروج از شرکت.برای مثال  PROCEDURE HIRE را اجرا می کنیم:برای PROCEDURE FIRE کد زیر را اجرا می کنیم:</description>
                <category>ابوالفضل فاتحی</category>
                <author>ابوالفضل فاتحی</author>
                <pubDate>Sat, 21 Aug 2021 18:04:03 +0430</pubDate>
            </item>
                    <item>
                <title>آشنایی با PACKAGE در اوراکل</title>
                <link>https://virgool.io/@abolfazl.fatehi07/%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-package-%D8%AF%D8%B1-%D8%A7%D9%88%D8%B1%D8%A7%DA%A9%D9%84-wdi0g0s2q0nm</link>
                <description>خیلی از اوقات نیاز است تا چندین function ،cursor و  procedure اجرا شوند. در چنین حالتی نیاز به استفاده از PACKAGE است این کار باعث می شود تا با استفاده از یکی از عناصر PACKAGE بقیه ی عناصر هم در رم قرار گیرند و عملکرد اوراکل بهبود پیدا کند. در اوراکل هر PACKAGE از دو قسمت تشکیل شده است. specification و BODY در قسمت specification متغیر ها، function ها، cursor ها و procedure ها معرفی می شوند. در قسمت BODY بخش اجرایی function ها،  cursor ها و  procedure ها  تعریف می شوند. به مثال زیر توجه کنید.specification BODY</description>
                <category>ابوالفضل فاتحی</category>
                <author>ابوالفضل فاتحی</author>
                <pubDate>Sat, 21 Aug 2021 15:29:19 +0430</pubDate>
            </item>
                    <item>
                <title>آشنایی با PROCEDURE در اوراکل</title>
                <link>https://virgool.io/@abolfazl.fatehi07/%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-procedure-%D8%AF%D8%B1-%D8%A7%D9%88%D8%B1%D8%A7%DA%A9%D9%84-uqe3z2yd8phf</link>
                <description>مثال زیر را در نظر بگیرید: در کد بالا ما یک PROCEDURE تعریف کرده ایم که وقتی شماره کارمندی را وارد می کنیم اسم و اسم خوانوادگی و حقوقش را برای ما چاپ می کند. نحوه ی استفاده از این PROCEDURE به صورت زیر است:در قطعه کد بالا شماره کارمندی 200 به عنوان ورودی به PROCEDURE داده شده است. همچنین می توان دستور بالا را به صورت زیر هم نوشت.توجه داشته باشید که برای حذف PROCEDURE می توان از دستور زیر استفاده کرد.</description>
                <category>ابوالفضل فاتحی</category>
                <author>ابوالفضل فاتحی</author>
                <pubDate>Sat, 21 Aug 2021 13:13:56 +0430</pubDate>
            </item>
                    <item>
                <title>آشنایی با تعریف FUNCTION در اوراکل</title>
                <link>https://virgool.io/@abolfazl.fatehi07/%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-%D8%AA%D8%B9%D8%B1%DB%8C%D9%81-function-%D8%AF%D8%B1-%D8%A7%D9%88%D8%B1%D8%A7%DA%A9%D9%84-yrg69b2xqkw6</link>
                <description>مثال زیر را در نظر بگیرید در این کد ما یک FUNCTION ساخته ایم که شماره کارمندی را گرفته و حقوق را چنان چه بالا تر از 20000 واحد باشد برابر HIGH و چنان چه بین 20000 و 15000 باشد برابر MED و چنان چه کمتر از 15000 باشد برابر LOW قرار میدهداستفاده از کلمه کلیدی RETURN در قسمت تعریف و اجرای  FUNCTION ضروری است برای مثال می توان  FUNCTION بالا را به صورت زیر به کار برددر عبارت بالا برای هر کارمند FUNCTION تعریف شده اجرا می شود و حقوق در یکی از سه دسته بالا قرار می گیرد </description>
                <category>ابوالفضل فاتحی</category>
                <author>ابوالفضل فاتحی</author>
                <pubDate>Sat, 21 Aug 2021 12:57:24 +0430</pubDate>
            </item>
                    <item>
                <title>معرفی PARAMETER CURSOR در اوراکل</title>
                <link>https://virgool.io/@abolfazl.fatehi07/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-parameter-cursor-%D8%AF%D8%B1-%D8%A7%D9%88%D8%B1%D8%A7%DA%A9%D9%84-ict05rcgvhqn</link>
                <description>در این مثال به معرفی PARAMETER CURSOR در اوراکل پرداخته شده است. شکل زیر را در نظر بگیرد:در خط سوم cur_test با پارامتر ورودی emp_id از نوع number تعریف شده است. در خط یازدهم متغیر v_id به صورت number تعریف شده است. مقدار این متغیر از کاربر گرفته می شود. در بدنه اجرایی بلاک پارامتر ورودی در cursor قرار داده می شود. (خط چهاردهم) </description>
                <category>ابوالفضل فاتحی</category>
                <author>ابوالفضل فاتحی</author>
                <pubDate>Fri, 20 Aug 2021 22:11:20 +0430</pubDate>
            </item>
                    <item>
                <title>مقایسه strong cursor و weak cursor</title>
                <link>https://virgool.io/@abolfazl.fatehi07/%D9%85%D9%82%D8%A7%DB%8C%D8%B3%D9%87-strong-cursor-%D9%88-weak-cursor-zb8iembjjrvj</link>
                <description>در پست قبلی به معرفی cursor پرداخته شد. strong cursor و weak cursor به صورت آنلاین در بدنه اجرایی بلاک تعریف می شود. در strong cursor در قسمت declare از نوع ref cursor معرفی شده است. همچنین ساختار آن برابر ساختار سطرهای جدول HR.EMPLOYEES است. تفاوت این دو نوع در نحوه تعریف ساختار cursor در قسمت declare است.خروجی دو قطعه کد بالا نمایش شماره کارمندی و میزان حقوق است. همچنین تعداد رکوردها نمایش داده می شود.</description>
                <category>ابوالفضل فاتحی</category>
                <author>ابوالفضل فاتحی</author>
                <pubDate>Fri, 20 Aug 2021 22:04:50 +0430</pubDate>
            </item>
                    <item>
                <title>مقدمه ای بر cursor در اوراکل</title>
                <link>https://virgool.io/@abolfazl.fatehi07/%D9%85%D9%82%D8%AF%D9%85%D9%87-%D8%A7%DB%8C-%D8%A8%D8%B1-cursor-%D8%AF%D8%B1-%D8%A7%D9%88%D8%B1%D8%A7%DA%A9%D9%84-ls8e6uxxxmbq</link>
                <description>در این پست قصد داریم به معرفی مقدماتی cursor در اوراکل بپردازیم. cursor در واقع یک ظرفی است که نتایج یک select درون آن ریخته شده است. cursor دارای یک اشاره گر است که به اولین سطر از خروجی select در این ظرف اشاره می کند.دو نوع cursor در اوراکل داریم: ضمنی(implicit) و آشکار(explicit). وقتی دستورات update ,insert, delete را اجرا می کنیم در واقع cursor های نوشته شده در دیتابیس را اجرا می کنیم که به این نوع cursor ها implicit cursor می گویند. نمونه ای از explicit cursor در ادامه  آمده است:خروجی کد بالا در واقع چاپ همه ی first_name  کارمندان است.همچنین در ادامه تعداد سطرها نیز چاپ شده است. در خط چهارم cursor تعریف شده است. در خط ششم ساختار متغیر r_test برابر ساختار سطر cursor تعریف شده است. در قسمت اجرایی block (یعنی جایی که با begin شروع شده است و با end تمام شده است.) ابتدا cursor باز شده است. در ادامه در loop  نوشته شده مقادیر موجود در cursor واکشی شده و داخل متغیر r_test  قرار می گیرد. </description>
                <category>ابوالفضل فاتحی</category>
                <author>ابوالفضل فاتحی</author>
                <pubDate>Fri, 20 Aug 2021 19:37:18 +0430</pubDate>
            </item>
                    <item>
                <title>دستور SELECT DISTINCT در SQL</title>
                <link>https://virgool.io/@abolfazl.fatehi07/%D8%AF%D8%B3%D8%AA%D9%88%D8%B1-select-distinct-%D8%AF%D8%B1-sql-zh5amhwld2yr</link>
                <description> چنانچه در ستون های مورد جستجو ، موارد تکراری وجود داشته باشد در نتيجه خروجی نمايش داده خواهند شد  برای جلوگيری از چنين موردی و عدم نمايش موارد تکراری پس از دستور Select عبارت DISTINCT نوشته می شود.خروجی عبارتست از:حالا با استفاده از SELECT DISTINCT داریم:خروجی عبارتست از:لازم به ذکر است که ترکیب دو ستون JOB_ID و SALARY منحصر به فرد است. توجه داشته باشید DISTINCT همیشه بعد از SELECT می آید.</description>
                <category>ابوالفضل فاتحی</category>
                <author>ابوالفضل فاتحی</author>
                <pubDate>Mon, 09 Aug 2021 23:31:05 +0430</pubDate>
            </item>
                    <item>
                <title>دستور ORDER BY در اوراکل</title>
                <link>https://virgool.io/@abolfazl.fatehi07/%D8%AF%D8%B3%D8%AA%D9%88%D8%B1-order-by-%D8%AF%D8%B1-%D8%A7%D9%88%D8%B1%D8%A7%DA%A9%D9%84-s1isbixfd2id</link>
                <description>اطلاعاتی که در دستور select در SQL به عنوان خروجی نمایش داده می شود به صورت تصادفی است.  مقادير خروجی در ستون های جدول بر اساس مقدار هيج ستونی مرتب نمی شوند . به کمک  دستور Order By می توان اطلاعات جدول را بر اساس مقادير يک يا چند ستون برحسب شاخص هايی مثل ترتيب کوچک تر  یا بزرگ تر بودن اعداد مرتب کرد. این دستور به صورت پیش فرض داده ها را صعودی مرتب می کند.داده های مرتب شده به صورت صعودی اگر بخواهید داده ها را به صورت نزولی مرتب کنید از کلمه ی کلیدی DESC استفاده می شود.داده های مرتب شده به صورت نزولیهمان طور که در تصویر بالا مشخص است مقادیر NULL در ابتدای ستون واقع شده است . برای رفع این مشکل میتوان از کلمه ی کلیدی NULLS LAST استفاده کرد.استفاده از کلمه ی کلیدی NULLS LAST</description>
                <category>ابوالفضل فاتحی</category>
                <author>ابوالفضل فاتحی</author>
                <pubDate>Sun, 08 Aug 2021 22:10:47 +0430</pubDate>
            </item>
                    <item>
                <title>کتابخانه parsivar</title>
                <link>https://virgool.io/@abolfazl.fatehi07/%DA%A9%D8%AA%D8%A7%D8%A8%D8%AE%D8%A7%D9%86%D9%87-parsivar-hmzjld9nmete</link>
                <description>کتابخانه parsivar از بهترین کتابخانه های موجود برای پردازش زبان فارسی در پایتون است. یکی از بخش های جالب این کتابخانه تبدیل جملات فینگلیش به جملات فارسی است. به عنوان مثال قطعه کد زیر را در نظر بگیرید:</description>
                <category>ابوالفضل فاتحی</category>
                <author>ابوالفضل فاتحی</author>
                <pubDate>Sun, 08 Aug 2021 20:29:41 +0430</pubDate>
            </item>
                    <item>
                <title>چگونه در اوراکل SELECT بزنیم</title>
                <link>https://virgool.io/@abolfazl.fatehi07/%DA%86%DA%AF%D9%88%D9%86%D9%87-%D8%AF%D8%B1-%D8%A7%D9%88%D8%B1%D8%A7%DA%A9%D9%84-select-%D8%A8%D8%B2%D9%86%DB%8C%D9%85-uylkyeom36qp</link>
                <description>دستور SELECT فهرست ستون ها را مشخص میکند همچنین نام جدول نیز در این دستور بعد از کلمه ی کلیدی FROM مشخص می شود در صورتی که در این فهرست * قرار دهیم همه ی ستون های یک جدول نمایش داده میشود.هر ستون را با , از سایر ستون ها جدا میکنیم. دستور select    خروجی دستور بالا عبارت است از : </description>
                <category>ابوالفضل فاتحی</category>
                <author>ابوالفضل فاتحی</author>
                <pubDate>Sat, 07 Aug 2021 14:49:59 +0430</pubDate>
            </item>
            </channel>
</rss>