/
  • Stored Procedure

  • صفحه‌ها (2):
  • ارسال پاسخ   امتیاز موضوع:
    • 1 رأی - میانگین امیتازات: 5
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی Stored Procedure
    نویسنده پیام
    mahyar1365 آفلاین
    عضو جدید
    **

    ارسال‌ها: 14
    تاریخ عضویت: ۱۳۸۸ آذر ۲۲
    اعتبار: 0
    تشکرها : 24
    ( 9 تشکر در 6 ارسال )
    ارسال: #1
    Stored Procedure
    سلام به همه Big Grin

    من توی نت و سایت های برنامه نویسی خیلی دنبال این گشتم که Stored Procedure چیه و در MySql چطوری میشه نوشتش؟؟؟؟؟؟ اما به هیچ جواب قانع کنند ه ای نرسیدم Dodgy خواستم ببینم اینجا کسی می تونه راهنمایی کنه ؟؟؟
    __________________________________________________________________________
    OpEN SoUrCe OpeN MiND oPen LiFE!
    ۱۳۸۸ بهمن ۱۸ ۱۲:۵۲ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : farhad.programmer
    k2-4u آفلاین
    LAMP Programmer
    ***

    ارسال‌ها: 88
    تاریخ عضویت: ۱۳۸۸ مرداد ۲۱
    اعتبار: 4
    تشکرها : 64
    ( 218 تشکر در 56 ارسال )
    ارسال: #2
    RE: Stored Procedure
    اینجا که کامل در موردش نوشته
    http://dev.mysql.com/doc/refman/5.1/en/s...tines.html
    ۱۳۸۸ بهمن ۱۸ ۰۱:۴۴ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : mahyar1365 farhad.programmer molana
    mahyar1365 آفلاین
    عضو جدید
    **

    ارسال‌ها: 14
    تاریخ عضویت: ۱۳۸۸ آذر ۲۲
    اعتبار: 0
    تشکرها : 24
    ( 9 تشکر در 6 ارسال )
    ارسال: #3
    RE: Stored Procedure
    من تشکر می کنم خیلی خوب بود اما حتی المکان می خواستم یه منبع فارسی پیدا کنم که برای همه قابل فهم و درک باشه درضمن حداقل یه مثال ساده هم در این مورد ذکر بشه

    باز هم تشکر میکنم
    خودم یک سری اطلاعات پیدا کردم امیدوارم مفید باشه :

    برخی از قابلیت های رویه های ذخیره شده یا Stored Procedure عبارت است از :



    1. Precompiled بودن آنها به این معنی که به زبان ماشین بسیار نزدیک شده و به طور کامل از اول ترجمه نمیشود ، این امر باعث افزایش سرعت بارگزاری می گردد .
    2. قابلیت ذخیره داشته و میتوان از یک رویه چندین بار در کد نویسی استفاده کرد .
    3. دارای ویرایشگر Query می باشد (میتوانید به سادگی یک Query حرفه ای ایجاد کنید)
    4. دارای Syntax Parser هست و از خطاهای SQL جلوگیری می کند .
    5. دارای امنیت بالایی است و از هک شدن سایت شما توسط SQL Injection در بسیاری موارد جلوگیری می کند .
    6. قابلیت درج چندین دستور SQL را پشت سرهم داراست .
    7. قابلیت ارسال ورودی و خروجی دارد .
    8. قابلیت برنامه نویسی ( شرط ، حلقه و...) به زبان TransactSQL دارد .

    و.....


    برگرفته از سایت:HOW 2 LEARN ASP.NET
    __________________________________________________________________________
    OpEN SoUrCe OpeN MiND oPen LiFE!
    (آخرین ویرایش در این ارسال: ۱۳۸۸ بهمن ۱۸ ۰۲:۳۰ عصر، توسط mahyar1365.)
    ۱۳۸۸ بهمن ۱۸ ۰۲:۲۰ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : farhad.programmer khezri
    rezaweb آفلاین
    رضا
    ***

    ارسال‌ها: 249
    تاریخ عضویت: ۱۳۸۸ آذر ۲۸
    اعتبار: 1
    تشکرها : 49
    ( 82 تشکر در 50 ارسال )
    ارسال: #4
    RE: Stored Procedure
    سلام
    ميشه بگين اين دستورات را در كجا بايد بنويسيم؟؟
    در phpmyadmin???
    يا در جاي ديگر؟
    __________________________________________________________________________
    نرم افزار قرض الحسنه تحت وب آشنا
    ۱۳۸۹ دي ۱۱ ۰۹:۴۰ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    ahora آفلاین
    کسی که از شکست نا امید نمیشه
    ****

    ارسال‌ها: 386
    تاریخ عضویت: ۱۳۸۷ دي ۹
    اعتبار: 4
    تشکرها : 130
    ( 54 تشکر در 41 ارسال )
    ارسال: #5
    RE: Stored Procedure
    سلام
    خب اولین باره همچین چیزی می شنوم حداقل یه منبع آموزش معرفی کنید....
    __________________________________________________________________________
    با تشکر ممل آمریکایی
    (آخرین ویرایش در این ارسال: ۱۳۸۹ دي ۱۳ ۰۱:۴۴ صبح، توسط ahora.)
    ۱۳۸۹ دي ۱۳ ۰۱:۴۴ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    zoghal آفلاین
    صالح سوزنچی
    *****

    ارسال‌ها: 1,760
    تاریخ عضویت: ۱۳۸۷ دي ۲۵
    اعتبار: 23
    تشکرها : 1500
    ( 1729 تشکر در 992 ارسال )
    ارسال: #6
    RE: Stored Procedure
    Stored Procedure فقط تو اسکیو ال سرور ماکروسافت هست(اوراکل رو نمی دونم.) اما معادلش در مای اسکیوال توابع هستند.

    برای مثال من قبلا دستورات تاریخ شمسی رو به صورت توابع دراوردم.
    کد PHP:
    -- ----------------------------
    -- Function 
    structure for `__mydiv`
    -- ----------------------------
    DROP FUNCTION IF EXISTS `__mydiv`;
    DELIMITER ;;
    CREATE DEFINER=`root`@`localhost` FUNCTION `__mydiv`(`aint,`bintRETURNS int(11)
    BEGIN

    # Copyright (C) 2009  Mohammad Saleh Souzanchi
    # WebLog : www.saleh.soozanchi.ir
    # Version V1.0
     
    return FLOORb);
    END;;
    DELIMITER ;

    -- ----------------------------
    -- Function 
    structure for `_gdmarray`
    -- ----------------------------
    DROP FUNCTION IF EXISTS `_gdmarray`;
    DELIMITER ;;
    CREATE DEFINER=`root`@`localhost` FUNCTION `_gdmarray`(`msmallintRETURNS smallint(2)
    BEGIN
    # Copyright (C) 2009  Mohammad Saleh Souzanchi
    # WebLog : www.saleh.soozanchi.ir
    # Version V1.0

        
    CASE m
            WHEN 0 THEN 
    RETURN 31;
            
    WHEN 1 THEN RETURN 28;
            
    WHEN 2 THEN RETURN 31;
            
    WHEN 3 THEN RETURN 30;
            
    WHEN 4 THEN RETURN 31;
            
    WHEN 5 THEN RETURN 30;
            
    WHEN 6 THEN RETURN 31;
            
    WHEN 7 THEN RETURN 31;
            
    WHEN 8 THEN RETURN 30;
            
    WHEN 9 THEN RETURN 31;
            
    WHEN 10 THEN RETURN 30;
            
    WHEN 11 THEN RETURN 31;
        
    END CASE;
       

    END;;
    DELIMITER ;

    -- ----------------------------
    -- Function 
    structure for `_jdmarray`
    -- ----------------------------
    DROP FUNCTION IF EXISTS `_jdmarray`;
    DELIMITER ;;
    CREATE DEFINER=`root`@`localhost` FUNCTION `_jdmarray`(`msmallintRETURNS smallint(2)
    BEGIN
    # Copyright (C) 2009  Mohammad Saleh Souzanchi
    # WebLog : www.saleh.soozanchi.ir
    # Version V1.0

        
    CASE m
            WHEN 0 THEN 
    RETURN 31;
            
    WHEN 1 THEN RETURN 31;
            
    WHEN 2 THEN RETURN 31;
            
    WHEN 3 THEN RETURN 31;
            
    WHEN 4 THEN RETURN 31;
            
    WHEN 5 THEN RETURN 31;
            
    WHEN 6 THEN RETURN 30;
            
    WHEN 7 THEN RETURN 30;
            
    WHEN 8 THEN RETURN 30;
            
    WHEN 9 THEN RETURN 30;
            
    WHEN 10 THEN RETURN 30;
            
    WHEN 11 THEN RETURN 29;
        
    END CASE;
       

    END;;
    DELIMITER ;

    -- ----------------------------
    -- Function 
    structure for `pdate`
    -- ----------------------------
    DROP FUNCTION IF EXISTS `pdate`;
    DELIMITER ;;
    CREATE DEFINER=`root`@`localhost` FUNCTION `pdate`(`gdatedatetimeRETURNS char(100CHARSET utf8
    BEGIN
    # Copyright (C) 2009  Mohammad Saleh Souzanchi
    # WebLog : www.saleh.soozanchi.ir
    # Version V1.0

        
    DECLARE 
            
    i,
            
    gygmgd,
            
    g_day_no,j_day_noj_np,
            
    jy,jm,jd INT DEFAULT 0;
        DECLARE 
    resout char(100);
        DECLARE 
    ttime CHAR(20);

        
    SET gy YEAR(gdate)-1600;
        
    SET gm MONTH(gdate)-1;
        
    SET gd DAY(gdate)-1;
        
    SET ttime TIME(gdate);
        
    SET g_day_no = ((365 *  gy) + __mydivgy+3) - __mydivgy+99 100 )+ __mydiv gy+399400 ) );
            
    SET i 0;

        WHILE (
    gm) do
            
    SET  g_day_no g_day_no _gdmarray(i);
            
    SET i i+1
        
    end WHILE;

        if  
    gm and (( gyand gy%100 <> )) or gy 400 0 THEN 
            SET     g_day_no 
    =    g_day_no +1;
        
    end IF;
        
        
    SET g_day_no g_day_no gd

        
    SET j_day_no g_day_no -79;
        
    SET j_np =  j_day_no DIV 12053;
        
    set j_day_no j_day_no 12053;
        
    SET jy 979 33 j_np __mydiv(j_day_no,1461);
        
    SET j_day_no j_day_no 1461;

        if 
    j_day_no >= 366 then 
            SET jy 
    jy __mydiv(j_day_no-1365);
            
    SET j_day_no =( j_day_no-1) % 365;
        
    end if;

        
    SET i 0;

        WHILE ( 
    11 and j_day_no >= _jdmarray(i) ) do
            
    SET  j_day_no j_day_no -  _jdmarray(i);
            
    SET i i+1;
        
    end WHILE;

        
    SET jm i+1;
        
    SET jd j_day_no+1;
             
    SET resout CONCAT_WS ('-',jy,jm,jd);

        if (
    ttime <> '00:00:00' then
            SET resout 
    CONCAT_WS(' ',resout,ttime);
        
    END IF;
        
        RETURN      
    resout;
    END;;
    DELIMITER ;

    -- ----------------------------
    -- Function 
    structure for `PMONTH`
    -- ----------------------------
    DROP FUNCTION IF EXISTS `PMONTH`;
    DELIMITER ;;
    CREATE DEFINER=`root`@`localhost` FUNCTION `PMONTH`(`gdatedatetimeRETURNS char(100CHARSET utf8
    BEGIN
    # Copyright (C) 2009  Mohammad Saleh Souzanchi
    # WebLog : www.saleh.soozanchi.ir
    # Version V1.0

        
    DECLARE 
            
    i,
            
    gygmgd,
            
    g_day_no,j_day_noj_np,
            
    jy,jm,jd INT DEFAULT 0;
        DECLARE 
    resout char(100);
        DECLARE 
    ttime CHAR(20);

        
    SET gy YEAR(gdate)-1600;
        
    SET gm MONTH(gdate)-1;
        
    SET gd DAY(gdate)-1;
        
    SET ttime TIME(gdate);
        
    SET g_day_no = ((365 *  gy) + __mydivgy+3) - __mydivgy+99 100 )+ __mydiv gy+399400 ) );
            
    SET i 0;

        WHILE (
    gm) do
            
    SET  g_day_no g_day_no _gdmarray(i);
            
    SET i i+1
        
    end WHILE;

        if  
    gm and (( gyand gy%100 <> )) or gy 400 0 THEN 
            SET     g_day_no 
    =    g_day_no +1;
        
    end IF;
        
        
    SET g_day_no g_day_no gd

        
    SET j_day_no g_day_no -79;
        
    SET j_np =  j_day_no DIV 12053;
        
    set j_day_no j_day_no 12053;
        
    SET jy 979 33 j_np __mydiv(j_day_no,1461);
        
    SET j_day_no j_day_no 1461;

        if 
    j_day_no >= 366 then 
            SET jy 
    jy __mydiv(j_day_no-1365);
            
    SET j_day_no =( j_day_no-1) % 365;
        
    end if;

        
    SET i 0;

        WHILE ( 
    11 and j_day_no >= _jdmarray(i) ) do
            
    SET  j_day_no j_day_no -  _jdmarray(i);
            
    SET i i+1;
        
    end WHILE;

        
    SET jm i+1;
        
    SET jd j_day_no+1;
        RETURN      
    jm;
    END;;
    DELIMITER ;

    -- ----------------------------
    -- Function 
    structure for `pmonthname`
    -- ----------------------------
    DROP FUNCTION IF EXISTS `pmonthname`;
    DELIMITER ;;
    CREATE DEFINER=`root`@`localhost` FUNCTION `pmonthname`(`gdatedatetimeRETURNS varchar(100CHARSET utf8
    BEGIN
    # Copyright (C) 2009  Mohammad Saleh Souzanchi
    # WebLog : www.saleh.soozanchi.ir
    # Version V1.0

    CASE PMONTH(gdate
        
    WHEN 1 THEN     RETURN 'فروردين';
        
    WHEN 2 THEN RETURN 'ارديبهشت';
        
    WHEN 3 THEN    RETURN 'خرداد';
        
    WHEN 4 THEN    RETURN 'تير';
        
    WHEN 5 THEN    RETURN 'مرداد';
        
    WHEN 6 THEN     RETURN 'شهريور';
        
    WHEN 7 THEN    RETURN 'مهر';
        
    WHEN 8 THEN    RETURN 'آبان';
        
    WHEN 9 THEN    RETURN 'آذر';
        
    WHEN 10 THEN RETURN    'دي';
        
    WHEN 12 THEN RETURN    'بهمن';
        
    WHEN 12 THEN RETURN    'اسفند';
    end CASE;


    END;;
    DELIMITER ;

    -- ----------------------------
    -- Function 
    structure for `pyear`
    -- ----------------------------
    DROP FUNCTION IF EXISTS `pyear`;
    DELIMITER ;;
    CREATE DEFINER=`root`@`localhost` FUNCTION `pyear`(`gdatedatetimeRETURNS char(100CHARSET utf8
    BEGIN
    # Copyright (C) 2009  Mohammad Saleh Souzanchi
    # WebLog : www.saleh.soozanchi.ir
    # Version V1.0

        
    DECLARE 
            
    i,
            
    gygmgd,
            
    g_day_no,j_day_noj_np,
            
    jy,jm,jd INT DEFAULT 0;
        DECLARE 
    resout char(100);
        DECLARE 
    ttime CHAR(20);

        
    SET gy YEAR(gdate)-1600;
        
    SET gm MONTH(gdate)-1;
        
    SET gd DAY(gdate)-1;
        
    SET ttime TIME(gdate);
        
    SET g_day_no = ((365 *  gy) + __mydivgy+3) - __mydivgy+99 100 )+ __mydiv gy+399400 ) );
            
    SET i 0;

        WHILE (
    gm) do
            
    SET  g_day_no g_day_no _gdmarray(i);
            
    SET i i+1
        
    end WHILE;

        if  
    gm and (( gyand gy%100 <> )) or gy 400 0 THEN 
            SET     g_day_no 
    =    g_day_no +1;
        
    end IF;
        
        
    SET g_day_no g_day_no gd

        
    SET j_day_no g_day_no -79;
        
    SET j_np =  j_day_no DIV 12053;
        
    set j_day_no j_day_no 12053;
        
    SET jy 979 33 j_np __mydiv(j_day_no,1461);
        
    SET j_day_no j_day_no 1461;

        if 
    j_day_no >= 366 then 
            SET jy 
    jy __mydiv(j_day_no-1365);
            
    SET j_day_no =( j_day_no-1) % 365;
        
    end if;

        
    SET i 0;

        WHILE ( 
    11 and j_day_no >= _jdmarray(i) ) do
            
    SET  j_day_no j_day_no -  _jdmarray(i);
            
    SET i i+1;
        
    end WHILE;

        
    SET jm i+1;
        
    SET jd j_day_no+1;
        RETURN      
    jy;
    END;;
    DELIMITER 

    طریقه استفاده هم تو وبلاگم هست
    ۱۳۸۹ دي ۱۳ ۱۰:۱۶ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    bestirani2 آفلاین
    عضو
    ***

    ارسال‌ها: 87
    تاریخ عضویت: ۱۳۸۸ مهر ۱۷
    اعتبار: 0
    تشکرها : 2
    ( 49 تشکر در 36 ارسال )
    ارسال: #7
    RE: Stored Procedure
    mysql هم Stored Procedure و هم توابع
    که توابع یک خروجی میدهند ولی Stored Procedure نمی دهد ولی در پارامتر ها مه میگیریم
    میتونیم از نوع ارجاعی out یا inout در نظر بگیریم
    طبعاً اوراکل که قویترین پایگاه داده هست هم، این مورد را دارد
    ۱۳۸۹ دي ۱۴ ۱۲:۴۷ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    zoghal آفلاین
    صالح سوزنچی
    *****

    ارسال‌ها: 1,760
    تاریخ عضویت: ۱۳۸۷ دي ۲۵
    اعتبار: 23
    تشکرها : 1500
    ( 1729 تشکر در 992 ارسال )
    ارسال: #8
    RE: Stored Procedure
    (۱۳۸۹ دي ۱۴ ۱۲:۴۷ صبح)bestirani2 نوشته شده توسط:  mysql هم Stored Procedure و هم توابع
    که توابع یک خروجی میدهند ولی Stored Procedure نمی دهد ولی در پارامتر ها مه میگیریم
    میتونیم از نوع ارجاعی out یا inout در نظر بگیریم
    طبعاً اوراکل که قویترین پایگاه داده هست هم، این مورد را دارد

    من تا الان چیزی به اسم Procedure که همون کار پروسیجر رو در مای اسکیوال سرور بکنه نه دیدم نه شنیدم. اگر شمت همون function رو منظورتونه که خوب بله کار Procedure رو با امکانات و .... بیشتر انجام میده. اما اگر منظورتون چیز دیگری هست. ممنون میشم در این ضمینه یک راهنمایی کنید. خیلی واسم جالب شد.
    ۱۳۸۹ دي ۱۴ ۰۲:۰۸ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    bestirani2 آفلاین
    عضو
    ***

    ارسال‌ها: 87
    تاریخ عضویت: ۱۳۸۸ مهر ۱۷
    اعتبار: 0
    تشکرها : 2
    ( 49 تشکر در 36 ارسال )
    ارسال: #9
    RE: Stored Procedure
    (۱۳۸۹ دي ۱۴ ۰۲:۰۸ صبح)zoghal نوشته شده توسط:  
    (۱۳۸۹ دي ۱۴ ۱۲:۴۷ صبح)bestirani2 نوشته شده توسط:  mysql هم Stored Procedure و هم توابع
    که توابع یک خروجی میدهند ولی Stored Procedure نمی دهد ولی در پارامتر ها مه میگیریم
    میتونیم از نوع ارجاعی out یا inout در نظر بگیریم
    طبعاً اوراکل که قویترین پایگاه داده هست هم، این مورد را دارد

    من تا الان چیزی به اسم Procedure که همون کار پروسیجر رو در مای اسکیوال سرور بکنه نه دیدم نه شنیدم. اگر شمت همون function رو منظورتونه که خوب بله کار Procedure رو با امکانات و .... بیشتر انجام میده. اما اگر منظورتون چیز دیگری هست. ممنون میشم در این ضمینه یک راهنمایی کنید. خیلی واسم جالب شد.
    Procedure از مای اس کیو ال 5 به بعد اضافه شده یعنی توسط شرکت اوراکل
    که سه نوع پارامتر میگیره in که وارد میشه out که فقط ارجایی هست (خارج میشه) و inout که هم وارد میشه و هم ارجاعی هست و در نهایت هیچ نوع خروجی نداره
    ولی توی توابع تمام پارامتر های ما فقط وارد میشند و نمیشه نوعش رو انتخاب کرد ولی یک چیزی رو آخر سر به عنوان خروجی میدیم
    http://dev.mysql.com/doc/refman/5.0/en/c...edure.html
    (آخرین ویرایش در این ارسال: ۱۳۸۹ دي ۱۴ ۰۱:۵۶ عصر، توسط bestirani2.)
    ۱۳۸۹ دي ۱۴ ۰۱:۵۲ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : zoghal
    rezaweb آفلاین
    رضا
    ***

    ارسال‌ها: 249
    تاریخ عضویت: ۱۳۸۸ آذر ۲۸
    اعتبار: 1
    تشکرها : 49
    ( 82 تشکر در 50 ارسال )
    ارسال: #10
    RE: Stored Procedure
    من يك ebook ازش پيدا كردم كه خيلي هم خوب و كامل بود
    در آن نوشته بود كه براي تست رويه (پروسيجر) هاتون از نرم افزار query browser استفاده كنيد .
    من هم از سايت mysql گرفتمش و خيلي راحت توانستم باهاش كار كنم و stored procedure بسازم
    فقط هنوز موفق نشدم آن را در كدهاي php فراخواني كنم كه البته اين را هم در ebook نوشته بود ولي نشد
    قبلا هميشه دات نتي ها مي گفتند mysql اين عيب بزرگ را داره كه نمي تواند با sp كار كند ولي الان ديگر اين مشكل رفع شده و خيلي هم كاربري است
    اگر كسي اين ebook را مي خواهد اعلام كند تا برايش بفرستم
    __________________________________________________________________________
    نرم افزار قرض الحسنه تحت وب آشنا
    ۱۳۸۹ دي ۱۵ ۰۹:۴۶ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    « قدیمی تر | تازه‌ تر »

  • صفحه‌ها (2):
  • ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS