Get number of records in all tables

Hello

I try to get the number of records from all the tables by using a dynamic query. I don't know how to put the placeholder value. I tried the code below.

SET SERVEROUTPUT SIZE 1000000
DECLARE
CURSOR table_list
IS
Select OBJECT_NAME from user_objects
where object_type in ('TABLE')
and object_name not like '% AUDIT_DDL % '.
AND object_name not like 'MD_ % '.
AND object_name not like "EXT_ %.
AND object_name not like 'STG_ % '.
AND object_name not like '% SYS_ ".
AND object_name not like '% TMP_ ".
AND object_name not like 'TEMP_ %.
order by 1;
v_count NUMBER: = 0;
query_str VARCHAR2 (1000);
BEGIN
FOR table_name IN table_list
LOOP
query_str: = ' SELECT COUNT (1) FROM "| table_name. Object_name;
dbms_output.put_line (query_str);
dbms_output.put_line (' Table name:' | table_name.) OBJECT_NAME);
v_count: = run immediately query_str;
dbms_output.put_line (' Table name:' | table_name.) OBJECT_NAME | ', County'. v_count);
END LOOP;
END;

I know that I am doing wrong in the "BOLD" lines. But do not know how to fix it. Help, please. Thanks in advance.

Change:

v_count:= execute immediate query_str;

TO

execute immediate query_str into v_count;

Tags: Database

Similar Questions

  • Count the number of records in all tables with a querry URGENT please...

    I downloaded ORACLE 9I DATA DUMP in my computer. There are number of tables. I need to know the tables with records more of say 100 or on the go. Is it possible... If so kindly let me know.

    Second, the database that I downloaded, I discovered that Audit_ trial was not activated by cooking
    ' select name, value of v$ parameter.
    where name like '% verification' and it turned out to be false.
    Can we assume that the database in the server as the audit_trial has been disabled...

    Published by: user1287492 on October 21, 2009 09:07

    Hello

    Place the table name with quotes. Maybe that's the problem.

    Try this code

    select table_name,
     to_number(
     extractvalue(
     xmltype(
     dbms_xmlgen.getxml('select count (*) c from "'||table_name||'"' ))
     ,'/ROWSET/ROW/C')) COUNT
     FROM USER_TABLES
     where iot_type IS NULL
    /
    

    SS

  • How can I get number of columns for all tables in a schema?


    Hello

    Can someone help me with the code to retrieve any of the columns in each table of a master plan? I'm sorry if it sounds simple. I'm a newbie...

    Thank you

    Maybe:

    Select table_name

    count (*) col_count

    of user_tab_cols

    Table_name group

    order of table_name;

  • How can I recover only odd or even number of records in the table?

    Hello

    How can I recover only odd or even number of records in the table?

    Thank you

    Hi IndiMinds,

    Alternatively, you can use in queries. :

    Odd:

    SELECT *.

    Of

    (SELECT rownum row_count, id, name FROM bigemp

    )

    WHERE mod (row_count, 2) = 1;

    Still:

    SELECT *.

    Of

    (SELECT rownum row_count, id, name FROM bigemp

    )

    WHERE mod (row_count, 2) = 0;

    Thank you

  • Total number of records in the table read

    Here is the procedure to read total no of record in the table specified by the user during execution. But it still gives the same answer for all the table. Can someone help me?

    create or replace procedure p3 (varchar2, not on the number tab)
    as
    Start
    Select count (*) from no tab;
    end;

    You need dynamic SQL statements.

    Or:
    http://laurentschneider.com/wordpress/2007/04/how-do-i-store-the-counts-of-all-tables.html
    To get the name of the Table and no lines
    http://asktom.Oracle.com/pls/asktom/f?p=100:11:1725645184471282:P11_QUESTION_ID:1660875645686

    Or simply use the data dictionary, collect statistics of the table, then:
    Select table_name, num_rows from user_tables;

  • difference in number of records in the table of audit

    Hi all

    We strive to remove lines of verification based on timestamp(sysdate-30) table(sys.aud$). The command I used below.

    SQL > set lines 200

    COL OWNER FORMAT A15

    Select TABLE_NAME, nom_tablespace, OWNER, num_rows, STATUS, DEGREE, TABLE_LOCK, LAST_ANALYZED, PARTITIONED, USER_STATS from dba_tables where TABLE_NAME = '& TABLE_NAME';

    SQL > SQL > type table_name value: AUD$

    OWNER, TABLE_NAME, NUM_ROWS STATUS DEGREE TABLE_LO LAST_ANALY BY USING NOM_TABLESPACE

    --------------- ------------------------------ ------------------------------ ---------- -------- ---------- -------- ---------- --- ---

    SYS AUD$ 934991 SYSTEM VALID ACTIVE 1 08/07/2012 No. No.

    SQL > delete / * + parallel (aud$ 8) * / of sys.aud$ where NTIMESTAMP # < sysdate-30; (I don't know why I put NTIMESTAMP #, although I see # aud TIMESTAMP column $ table, the above query, I got from sr dba)

    3140994 deleted rows. (reason why so many records have been deleted I see 934991 lines from dba_tables view)


    After that I saw the difference in number of records.


    SQL > select / * + parallel (aud$ 8) * / count (*) from sys.aud$ where TIMESTAMP # < sysdate-30;

    COUNT (*)

    ----------

    0

    SQL > select / * + parallel (aud$ 8) * / count (*) from sys.aud$ where NTIMESTAMP # < sysdate-30; -> Why there are differences in the number of records if I put NTIMESTAMP #in query)


    COUNT (*)

    ----------

    50

    Thank you

    Bhavani.

    SQL > SELECT count (*) from sys.aud$ where ntimestamp #.<>

    COUNT (*)
    ----------
    0

    Try this one.  Good luck.

  • by comparing the number of records in the table child

    I have 3 tables below:

    Table 1 - Parent Table
    Table table2 child - who has the number of records for each record in Table1 (row_id in Table1 corresponds to par_row_id in Table2)
    Child table table 3 - has that number of records for each record in Table1 (row_id in Table1 corresponds to par_row_id in table 3)

    I would like to run an Oracle SQL query to identify all the separate row_id on Table1, for which the number of child records in Table2 does not match the number of child records in Table3

    I ask for help to identify the best way to identify these records in the parent table. If possible an example too, please.

    Thank you

    Published by: cseshan on February 3, 2013 01:35

    All by adding the simplest example (with the sample data that you were supposed to provide) below

    create table table1(row_id number primary key);
    
    create table table2(par_row_id number references table1);
    
    create table table3(par_row_id number references table1);
    
    insert into table1 values(1);
    insert into table2 values(1);
    insert into table3 values(1);
    
    insert into table1 values(2);
    insert into table2 values(2);
    insert into table2 values(2);
    
    insert into table1 values(3);
    insert into table3 values(3);
    insert into table3 values(3);
    
    insert into table1 values(4);
    insert into table2 values(4);
    insert into table2 values(4);
    insert into table2 values(4);
    insert into table3 values(4);
    insert into table3 values(4);
    
    commit;
    
    with child1_cnt as
    (
      select par_row_id,count(*) cnt
      from table2
      group by par_row_id
    ),
    child2_cnt as
    (
      select par_row_id,count(*) cnt
      from table3
      group by par_row_id
    ),
    all_counts as
    (
      select p.row_id,nvl(c1.cnt,0) c1_cnt,nvl(c2.cnt,0) c2_cnt
      from table1 p
       left outer join child1_cnt c1
         on ( p.row_id = c1.par_row_id )
       left outer join child2_cnt c2
         on ( p.row_id = c2.par_row_id )
    )
    select row_id,c1_cnt,c2_cnt
    from all_counts
    where c1_cnt != c2_cnt;
    
    ROW_ID C1_CNT C2_CNT
    ------ ------ ------
         2      2      0
         4      3      2
         3      0      2 
    
  • Get number of records in the date range - IDE: PLSQL Developer

    I want to count the number of records of members who register within a date range specified, based on effective and expiration dates and their "elg_code". I posted the SQL code for some examples of data. What I would like to see returned is in three columns of the counties where the eff_date date_exp members fall within the date range specified by the SQL and have an Elg_code of ' ' (space).

    So what I would like is all members with elg_code ' ' where he eff_dt and exp_dt range is April 2012, 2012 MAY & JUN 2012. Thus, according to data from the sample I posted, Mark, where his elg_code record is ' ', his eff_dt is 01/01/2011 and April 2012 (30/04/2012) is his exp_dt. Range of the brand statement may 2012, but not MAY or JUNE of 2012. Marty would tally for the APR and MAY because his eff_dt is before MAY 2012 and his exp to MAY 2012. etc...

    According to the data below, the results should resemble:

    APR MAY JUN
    4-3-2

    APR should have FRANK, MARK, MARTY, MARY.
    MAY should have FRANK, MARTY, MARY
    JUN should have FRANK and MARIE

    NOAM and JOHN should not appear as his records with elg_code ' ' have no documents eff_dt and exp_dt which are April-June 2012.

    So what I tried without success as it appears that I have a kind of Cartesian question (?), is:

    Select count (m1.mbr_name) APR,
    Count (m2.mbr_name) MAY,
    Count (m3.mbr_name) JUN
    mbr2 M1,
    mbr2 m2,
    mbr2 m3
    "where m1.eff_dt < ' 01 - may - 2012"
    "and m1.exp_dt > ' 01-Apr-2012.
    and m1.elg_code = ' '
    "and m2.eff_dt < 1 June 2012"
    "and m2.exp_dt > ' 01 - may - 2012"
    and m2.elg_code = ' '
    "and m3.eff_dt < 1 July 2012"
    "and m3.exp_dt > 1 June 2012"
    and m3.elg_code = ' '


    Here's the DML

    Thanks for any help!


    create table mbr2 (mbr_name varchar (10), varchar (1) grpid eff_dt date, date of exp_dt elg_code varchar (1))
    Commit

    insert into mbr2 values ('BRAND', 'A', to_date (January 1, 2011 ',' DD-MM-YYYY '), to_date (April 30, 2012 ',' DD-MM-YYYY '), ' ')
    insert into mbr2 values ('BRAND', 'A', to_date (May 1, 2012 ',' DD-MM-YYYY '), to_date (31 December 2013 ',' DD-MM-YYYY '), 'C')

    insert into mbr2 values ('MARTY', 'A', to_date (January 1, 2011 ',' DD-MM-YYYY '), to_date (May 31, 2012 ',' DD-MM-YYYY '), ' ')
    insert into mbr2 values ('MARTY', 'A', to_date (June 1, 2012 ',' DD-MM-YYYY '), to_date (31 December 2013 ',' DD-MM-YYYY '), 'C')

    insert into mbr2 values ('FRANK', 'B', to_date (January 1, 2011 ',' DD-MM-YYYY '), to_date (June 30, 2012 ',' DD-MM-YYYY '), ' ')
    insert into mbr2 values ('FRANK', 'B', to_date (July 1, 2012 ',' DD-MM-YYYY '), to_date (31 December 2013 ',' DD-MM-YYYY ""), 'C')

    insert into mbr2 values ('MARY', 'B', to_date (January 1, 2011 ',' DD-MM-YYYY '), to_date (June 30, 2012 ',' DD-MM-YYYY '), ' ')
    insert into mbr2 values ('MARY', 'B', to_date (July 1, 2012 ',' DD-MM-YYYY '), to_date (31 December 2013 ',' DD-MM-YYYY ""), 'C')

    insert into mbr2 values ('JOHN', 'C', to_date (January 1, 2011 ',' DD-MM-YYYY '), to_date (July 1, 2011 ',' DD-MM-YYYY '), ' ')
    insert into mbr2 values ('JOHN', 'C', to_date (July 1, 2011 ',' DD-MM-YYYY '), to_date (1 January 2012 ',' DD-MM-YYYY ""), 'C')

    insert into mbr2 values ("NOAM" 'd', to_date (July 1, 2012 ',' DD-MM-YYYY '), to_date (31 December 2013 ',' DD-MM-YYYY '), ' ' ")

    Commit

    This gives you a report for the current month and the two front. Column header must be adjusted ;-)

    select
      count(
      case
      when
        eff_dt < add_months(trunc(sysdate,'MM'), -1)
        and
        exp_dt >= add_months(trunc(sysdate,'MM'), -2)
      then 1
      end) April
    , count(
      case
      when
        eff_dt < add_months(trunc(sysdate,'MM'), 0)
        and
        exp_dt >= add_months(trunc(sysdate,'MM'), -1)
      then 1
      end) May
    , count(
      case
      when
        eff_dt < add_months(trunc(sysdate,'MM'), 1)
        and
        exp_dt >= add_months(trunc(sysdate,'MM'), 0)
      then 1
      end) June
    from mbr2
    where
    elg_code = ' '
    and
    eff_dt < add_months(trunc(sysdate,'MM'), 1)
    and
    exp_dt >= add_months(trunc(sysdate,'MM'), -2)
    
    APRIL     MAY     JUNE
    4     3     2
    
  • How to get the last records of a Table

    Hey Geeks,

    I have this 'conflict '.

    I need to get the 'current balance' for each account, the newest "current_Balance".

    The table looks like this

    ACCOUNT_IDBUSINESS_TRANSACTION_IDCURRENT_BALANCETRANSACTION_AMOUNTTRANSACTION_DATE
    1 062 570238 043 51751'022-20'00031.03.2014 17:49:00.808000
    1 062 570238 042 40771'022-20'00031.03.2014 17:33:55.666000
    1 062 570238 042 36891'022-26'00031.03.2014 17:33:20.067000
    1 062 570238 041 273117'022-50,00031.03.2014 17:18:25.189000
    1 062 570238 041 174167'022-10,00031.03.2014 17:16:59.361000
    1 062 570238 038 702177'022-2'50031.03.2014 16:44:58.332000
    5 607 555238 046 7131'026-28'50031.03.2014 18:35:16.212000
    5 607 555238 040 59229'526-100,00031.03.2014 17:10:15.474000

    I need this result:

    ACCOUNT_ID CURRENT_BALANCE

    5 607 555 1'026

    1 062 570 51'022                   


    How we handle this?


    Thxs for your help


    Ineffective :-)

    SELECT Account_id

    MAX (current_balance) KEEP (DENSE_RANK LAST ORDER BY transaction_date) current_balance

    MAX (business_transaction_id) KEEP (DENSE_RANK LAST ORDER BY transaction_date) business_transaction_id

    Of account_balances

    GROUP BY account_id

    See on Oracle: clause to keep

    Concerning

    Marcus

  • Query to get the number of records

    Hi all

    I would get the number of records in all tables in a schema. I don't want to run select count (*) of < table name >, because there are nearly 400 paintings. So I need a generic quqeyr that will give the recordcount for all tables.

    Experts good help yourslef to tide me over.

    Do you need a specific account? Or an approximate count is sufficient? Do you use the RBO and CBO?

    If you use the CBO and want an approximate count, column NUM_ROWS USER_TABLES should give you what you want.

    If you need a specific account, you will have full scan all tables. You can automate this process via SQL dynamic, i.e.

    DECLARE
      l_cnt INTEGER;
    BEGIN
      FOR x IN (SELECT table_name FROM user_tables)
      LOOP
        EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM ' || x.table_name INTO l_cnt;
        dbms_output.put_line( 'Table ' || x.table_name || ' has ' || l_cnt || ' rows.' );
      END LOOP;
    END;
    

    Lawrence was also a [solution based on XML Query | http://laurentschneider.com/wordpress/2007/04/how-do-i-store-the-counts-of-all-tables.html] to count all the rows in each table in a schema.

    Justin

  • difference in number of records

    Hi all

    I'm trying to get a number of records in this table and I get 2 different output, select count (*) shows 68560 and after update stats NUM_ROWS watch 68323, can someone help me figureout why the difference.

    SQL > select count (*) in the dcepcd;

    COUNT (*)
    ----------
    68560

    SQL > select num_rows in dba_tables where table_name = 'DCEPCD ';

    NUM_ROWS
    ----------
    68323

    Thank you / JJ

    864653 wrote:
    Hi all

    I'm trying to get a number of records in this table and I get 2 different output, select count (*) shows 68560 and after update stats NUM_ROWS watch 68323, can someone help me figureout why the difference.

    SQL > select count (*) in the dcepcd;

    COUNT (*)
    ----------
    68560

    SQL > select num_rows dba_tables where table_name = 'DCEPCD ';

    NUM_ROWS
    ----------
    68323

    Thank you / JJ

    When you gather stats, Oracle is probably just sampling the data. This means that Oracle would be approximately the number of lines, not give you the actual number of lines. Please read the documentation on DBMS_STATS:
    http://docs.Oracle.com/CD/E11882_01/AppDev.112/e25788/d_stats.htm

    Here is a relevant excerpt:
    Table 141-39 GATHER_DATABASE_STATS procedure parameters
    estimate_percent
    Percentage of rows estimate (NULL means calculates): the valid range is [0.000001,100]. Use the constant DBMS_STATS. AUTO_SAMPLE_SIZE to Oracle to determine the size of the sample appropriate for good statistics. It is the default value. The default value can be changed using the SET_DATABASE_PREFS procedure SET_GLOBAL_PREFS procedure, procedure SET_SCHEMA_PREFS and SET_TABLE_PREFS procedure.

    Summary: You should get the actual number of lines if gather you stats with estimate_percent => NULL. Be aware that Oracle does not by default for performance reasons.

  • Inventory of the data of all Tables in a database

    Hello
    We do the analysis of the existing data base (Oracle 10 g) and I want to prepare an inventory of the data of all tables in a database that is

    1. total number of records in a table
    2. total number of records that have null values in a column
    3. total number of standalone tables IE have no connection with other tables
    etc...

    Please let me know if there are tools or query that can do these tasks.

    Thank you and best regards,
    Lokesh
    select owner "Owner",
    table_name "Table_Name",
    column_name "Column_Name",
    initcap(data_type) ||
    decode(data_type,
    'CHAR', '('|| char_length ||')',
    'VARCHAR', '('|| char_length ||')',
    'VARCHAR2', '('|| char_length ||')',
    'NCHAR', '('|| char_length ||')',
    'NVARCHAR', '('|| char_length ||')',
    'NVARCHAR2', '('|| char_length ||')',
    'NUMBER', '('||
    nvl(data_precision,data_length)||
    decode(data_scale,null,null,
    ','||data_scale)||')',
    null) "Type",
    nullable "Nullable",
    decode(to_char(num_distinct),
    0,'No',
    'YES') "Have Data",
    owner sdev_link_owner,
    table_name sdev_link_name,
    'TABLE' sdev_link_type
    from sys.dba_tab_columns
    where (:OWNER is null or instr(owner,upper(:OWNER)) > 0)
    and (:TABLE_NAME is null or
    instr(upper(table_name),upper(:TABLE_NAME)) > 0)
    and (:COLUMN_NAME is null or
    instr(upper(column_name),upper(:COLUMN_NAME)) > 0)
    and substr(table_name,1,4) != 'BIN$'
    and substr(table_name,1,3) != 'DR$'
    order by owner, table_name, column_id
    

    I added a new column with an alias "get data". This new column will display "NO" is the entire column is zero and 'YES' if there is even a value not null in the column. But caution is that statistics table must be updated to get the correct results.

    Thus, it may be useful to gather current statistics before executing the query.

    Exec dbms_stats.gather_schema_stats or even dbms_stats.gather_database_stats.

  • to insert multiple records in another table

    Hi all;

    How can I increase the number of records in the table?

    SQL > insert into tab2 to select * From tab1;

    Enter tab2 to select * From tab1

    *

    ERROR on line 1:

    ORA-00926: lack of keyword VALUES

    Hi try this...

    Insert in tab2 select * from tab1

  • Try to count the number of records where some columns are met

    Using SQL in Toad against an Oracle table, I'm trying to count the number of records in a table where some columns are filled. For
    example, I need to know the total number of records from a table where

    ln_stop_cd is not null - 65000 records
    ln_process_cd is <>- 25000 0 records
    ln_opt_cd is not null - 7500 records

    and the record_type = "A".

    I know that the total individual records as described above. However, I do not know how
    the SQL to show for record_type = 'A' the total count is 97500 records. Any help would be
    appreciated.

    Hello

    It seems that the problem is that the indictment may overlap; You can count the same rank 0, 1, 2 or 3 times, depending on whether 0, 1, 2 or 3 of these 3 independent conditions are met.

    Try something like this:

    SELECT     COUNT (in_stop_cd)
          + COUNT (CASE WHEN in_process_cd  != 0        THEN 1 END)     -- this site doesn't like the other inequality operator
          + COUNT (in_opt_cd)        AS grand_total
    FROM    table1
    WHERE     dt          >= TO_DATE ('01-JUN-2011', 'DD-MON-YYYY')
    AND     dt          <  TO_DATE ('02-JUN-2011', 'DD-MON-YYYY')
    AND     record_type       = 'A'
    ;
    

    You want to make charges without making 3 assists separated through the table. The problem is the 3 original requests had slightly different WHERE clauses.
    Put these conditions in the WHERE clause and make other conditions apply only to the individual counties, either with a column instead of *, or using a CASE statement that contains the condition that applies only to the column.

    Also, the date is not a column name good. Do not compare the DATEs to strings. If your column is really a DATE and you want to ignore the hours, the minutes and seconds, then the best way is to compare the column with 2 other DATES, as shown above. It's more coding, but it is more efficient and more reliable.

    I hope that answers your question.
    If not, post a small example data (CREATE TABLE and only relevant columns, INSERT statements) and also publish outcomes from these data.
    You don't have to display a large amount of data. You can probably give an excellent example of this problem with only 5 or 10 rows of sample data.
    Explain, using specific examples, how you get these results from these data.
    Always tell what version of Oracle you are using.

    Published by: Frank Kulash, August 4, 2011 11:27

  • get the last record

    What is the best way to get the last record in a table?
    ... in addition to select * from tbl by id Desc... & then set = 1 maxrow in cfoutput.

    I want a quick way.
    I tried "Max (id), columns, but not worked.
    If I ' Max (id) as V ' & then turn around and make another request for ' where id = #V # "to get the rest of the record, there's more action.

    Quote:
    Posted by: paross1
    One way...

    SELECT all your columns
    From your_table
    WHERE your_engagement_appid = (SELECT MAX (your_id)
    From your_table)

    Phil

    Thank you guys. It worked great.
    I also tried the front joined query where the... I would have thought that.
    Thank you!

Maybe you are looking for

  • Firefox does not open from the desktop icons

    Hi guys: were adware problem by resetting firefox market and stop for 12 months. Now I virtue open in the... Task Manager shortcut icons / start bar will not work. Any advice much appreciated

  • When I put the profile command in run it gives me a firefox page

    When I put the command of the profile ("C:\Program Files\Mozilla Firefox\firefox.exe" - p) in win + R (run), it gives me a firefox page

  • PDF files

    When I try to view a PDF file, it evokes the Windows Media Player. I can't find anyway to view the PDF file. Can someone give me advice?

  • bugs of energy management

    I get the following error when I shut down or restart the computer after disabling "Smart CPU for energy savings" in power management settings: Energy Management.exe - Application error The instruction at 0 x 80001700 referenced memory at 0 x 8000170

  • Sins of a Solar Empire will not run.

    I've recently upgraded from Vista to Win7 and in the process reformated my computer now when I try to run Sins of a Solar Empire all I get is the window that gives me the options to update game, the game, the update of my series and to open the Getti