Discussions
Categories
- 196.7K All Categories
- 2.2K Data
- 235 Big Data Appliance
- 1.9K Data Science
- 449.8K Databases
- 221.5K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 31 Multilingual Engine
- 549 MySQL Community Space
- 477 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3K ORDS, SODA & JSON in the Database
- 532 SQLcl
- 4K SQL Developer Data Modeler
- 186.8K SQL & PL/SQL
- 21.2K SQL Developer
- 295.3K Development
- 17 Developer Projects
- 138 Programming Languages
- 292K Development Tools
- 104 DevOps
- 3.1K QA/Testing
- 645.9K Java
- 27 Java Learning Subscription
- 37K Database Connectivity
- 153 Java Community Process
- 105 Java 25
- 22.1K Java APIs
- 138.1K Java Development Tools
- 165.3K Java EE (Java Enterprise Edition)
- 17 Java Essentials
- 158 Java 8 Questions
- 85.9K Java Programming
- 79 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.2K Java SE
- 13.8K Java Security
- 203 Java User Groups
- 24 JavaScript - Nashorn
- Programs
- 390 LiveLabs
- 37 Workshops
- 10.2K Software
- 6.7K Berkeley DB Family
- 3.5K JHeadstart
- 5.6K Other Languages
- 2.3K Chinese
- 170 Deutsche Oracle Community
- 1K Español
- 1.9K Japanese
- 230 Portuguese
count the row before a delete

Hi all,
In a store procedure, I need to delete some row, and I want to know how many rows I'm going to delete before to really delete them,
for example I can write
select count(k_id) into count from tab1 where id_s=12;
and after
delete from tab1 where id_s=12;
But I'm asking if there is a different way to accomplish this.
thanks
Best Answer
-
Why not do it the other way around?
delete from tab1 where id_s = 12;
and using sql%rowcount immediately after the DELETE, you know how many were removed.
BEGIN delete from tab1 where id_s = 12; dbms_output.put_line (to_char (sql%rowcount)||' removed'); end;
Answers
-
Why not do it the other way around?
delete from tab1 where id_s = 12;
and using sql%rowcount immediately after the DELETE, you know how many were removed.
BEGIN delete from tab1 where id_s = 12; dbms_output.put_line (to_char (sql%rowcount)||' removed'); end;
-
Hi,
Why do you want to count the rows?
Are you going to do something special before deleting them, or maybe not delete them at all, depending on how many rows are involved? If so, what you posted is the best way.
Do you just need to know how many rows were deleted? In PL/SQL, you can do that after the DELETE, like this:
DELETE ...; rows_deleted := SQL%ROWCOUNT;
Make sure you save the value immediately after the DELETE. Other statements may automatically change SQL%ROWCOUNT (just like DELETE did).