Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

I want to insert variable values into a table

Albert ChaoSep 20 2021

I have tried but not able insert the values into the summary table. Please assume all the tables are created.

Declare
tot_records number(10);
records_loaded number(10);
process_start_time timestamp;
lv_count number(10);
begin
tot_records := select count(1) into lv_count from employees;
insert into department select * from employees;
records_loaded := sql%rowcount;
process_start_time := current_timestamp;
insert into summary(total,tot_loads,start_time) values(tot_records,records_loaded,process_start_time);
end;
This post has been answered by Solomon Yakobson on Sep 20 2021
Jump to Answer

Comments

Frank Kulash

Hi, @albert-chao
Please assume all the tables are created.
No; whenever you have a question, actually post CREATE TABLE and INSERT statements for a little sample data, and the exact results you want from that data. For DML questions (such as INSERT) the results will be what the changed table looks like after the DML is completed.

Solomon Yakobson
Answer

You don't assign SELECTed data to a variable via assignment statement. You use INTO clause:

Declare
tot_records number(10);
records_loaded number(10);
process_start_time timestamp;
begin
select count(1) into tot_records from employees;
insert into department select * from employees;
records_loaded := sql%rowcount;
process_start_time := current_timestamp;
insert into summary(total,tot_loads,start_time) values(tot_records,records_loaded,process_start_time);
end;

Also why are you inserting employee data into department table???
SY.

Marked as Answer by Albert Chao · Sep 21 2021
Frank Kulash

Hi, [Albert Chao](/ords/forums/user/Albert Chao)

tot_records := select count(1) into lv_count from employees;

won't work in PL/SQL; you can't have SELECT immediately after :=.
Do something like this instead:

	select  count (*)
	into 	tot_records
	from 	employees;
mathguy

I have tried but not able insert the values into the summary table.
In this case, the mistake was so obvious that we didn't need more information from you. But in general, if something "doesn't work", you won't get a lot of help if you just say "it doesn't work". You need to tell us exactly what is not working. Does compilation fail? (It would, in this case - with an error message pointing exactly to the place in the code where the error is.) Does the compilation succeed, but then you get an error thrown when you execute the block? Does execution go through, but you get the wrong result? Etc.
Please keep this in mind next time you ask a question (here or on any other forum). Also, make sure to always state your database version - in many cases (even though not in your problem here), that is the key piece of information.

1 - 4

Post Details

Added on Sep 20 2021
4 comments
6,396 views