Get number of records in all tables
HelloI 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:07Hello
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?
HelloCan 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:1660875645686Or 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 (*)
----------
0Try 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:35All 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 '), ' ' ")
CommitThis 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_ID BUSINESS_TRANSACTION_ID CURRENT_BALANCE TRANSACTION_AMOUNT TRANSACTION_DATE 1 062 570 238 043 517 51'022 -20'000 31.03.2014 17:49:00.808000 1 062 570 238 042 407 71'022 -20'000 31.03.2014 17:33:55.666000 1 062 570 238 042 368 91'022 -26'000 31.03.2014 17:33:20.067000 1 062 570 238 041 273 117'022 -50,000 31.03.2014 17:18:25.189000 1 062 570 238 041 174 167'022 -10,000 31.03.2014 17:16:59.361000 1 062 570 238 038 702 177'022 -2'500 31.03.2014 16:44:58.332000 5 607 555 238 046 713 1'026 -28'500 31.03.2014 18:35:16.212000 5 607 555 238 040 592 29'526 -100,000 31.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
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 / JJ864653 wrote:
Hi allI'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 (*)
----------
68560SQL > select num_rows dba_tables where table_name = 'DCEPCD ';
NUM_ROWS
----------
68323Thank 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.htmHere 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,
Lokeshselect 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
-
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
-
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?
-
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