StudentCodingHUB

Use programming to create innovative things.
  • new post

    Monday, 4 May 2015

    Get page wise records in mysql

    Get page wise records

    Select * from items Limit 0,10            >> return firt 10 records
    Select * from items Limit 11,10          >> return 10 records starts from 11

    DELIMITER $

    DROP PROCEDURE IF EXISTS `demo_sp_simplePaging` $

    CREATE PROCEDURE `demo_sp_simplePaging` (

    p_searchPhrase VARCHAR(50),

    p_page_no INT

    )

    BEGIN



    DECLARE int_page_size INT;

    DECLARE int_last_page INT;



    SET int_page_size = 20;



    SET p_page_no = COALESCE(p_page_no, 1);



    DROP TEMPORARY TABLE IF EXISTS `my_table_rows`;



    CREATE TEMPORARY TABLE `my_table_rows` (

    `tmp_idx` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

    `tmp_id` INT NOT NULL

    )ENGINE=memory;



    INSERT INTO `my_table_rows`(`tmp_id`)

    SELECT `my_key_id`

    FROM `my_table`

    WHERE `filter_col` LIKE p_searchPhrase

    ORDER BY `order_col`;



    SELECT max(CEILING(`tmp_idx`/int_page_size))

    INTO int_last_page

    FROM `my_table_rows`;



    #prev page no

    IF p_page_no > 1 THEN



    SELECT p_page_no - 1 AS "PREV_PAGE";



    END IF;



    #next page no

    IF p_page_no < int_last_page THEN



    SELECT p_page_no + 1 AS "NEXT_PAGE";



    END IF;



    SELECT *

    FROM `my_table_rows` JOIN `my_table` ON `my_key_id` = `tmp_id`

    WHERE CEILING(`tmp_idx`/int_page_size) = p_page_no

    ORDER BY `tmp_idx`;



    DROP TEMPORARY TABLE IF EXISTS `my_table_rows`;



    END$

    DELIMITER;

    No comments:

    Post a Comment