How to count all table record using store procedure

 CREATE DEFINER=`db_user`@`%` PROCEDURE `COUNT_ALL_RECORDS_BY_TABLE`()

LANGUAGE SQL

NOT DETERMINISTIC

CONTAINS SQL

SQL SECURITY DEFINER

COMMENT ''

BEGIN

DECLARE done INT DEFAULT 0;

DECLARE TNAME CHAR(255);


DECLARE table_names CURSOR for 

    SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_ROWS>0 and TABLE_SCHEMA = DATABASE();


DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;


OPEN table_names;   


DROP TABLE IF EXISTS TCOUNTS;

CREATE TEMPORARY TABLE TCOUNTS 

  (

    TABLE_NAME CHAR(255),

    RECORD_COUNT INT

  ) ENGINE = MEMORY; 



WHILE done = 0 DO


  FETCH NEXT FROM table_names INTO TNAME;


   IF done = 0 THEN

    SET @SQL_TXT = CONCAT("INSERT INTO TCOUNTS(SELECT '" , TNAME  , "' AS TABLE_NAME, COUNT(*) AS RECORD_COUNT FROM ", TNAME, ")");


    PREPARE stmt_name FROM @SQL_TXT;

    EXECUTE stmt_name;

    DEALLOCATE PREPARE stmt_name;  

  END IF;


END WHILE;


CLOSE table_names;


SELECT * FROM TCOUNTS ORDER BY Table_Name aSC;

# SELECT * FROM TCOUNTS ORDER BY RECORD_COUNT DESC;

END

Comments

Popular posts from this blog

MySQL Replication Switchover: Step-by-Step Guide

How to create database manually in oracle 11g R2

How To Install and Configure Innodb Cluster /shell/Router