Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.misc -> Re: Inserting Records Into a table
"Charles Hooper" <hooperc2000_at_yahoo.com> wrote in message news:1157679949.390916.41560_at_i3g2000cwc.googlegroups.com...
> B. Williams wrote:
> > OK, looking over the requirements again: > "The end result is supposed to list > the two columns with the month under the month column and the date > under the > day column. It also requires using a seperate loop for every month and > a > counter to keep track of the total records inserted. I have a good > understanding of counter so I don't need any assistance with that. I > created > a loop for the months, but it is rather long and it doesn't meet the > requirement for the day." > > It still looks like you are still working too hard at the problem. The > solution in pseudo code (actually VB syntax): > Dim m As Integer > Dim d As Integer > Dim varStartMonth As Variant 'This is a date > Dim varMonth As Variant 'This is a date > Dim strMonth As String 'This is a VARCHAR2 > Dim intDay As Integer > Dim intCounter As Integer > > varStartMonth = CDate("01/01/2006") 'Set the first day of the year > intCounter = 0 'Zero the counter, not required in some languages > > For m = 1 To 12 'Loop through the 12 months > varMonth = DateAdd("m", m - 1, varStartMonth) 'Record the > numeric value of the first day of each month > strMonth = Format(DateAdd("m", m - 1, varStartMonth), "MMMM") > 'Record the month name for each month > For d = 1 To 31 'Loop through up to 31 days in the month > If Format(DateAdd("d", d - 1, varMonth), "MMMM") = strMonth > Then > 'This date is still in the same month > 'Output the strMonth (month name) and the value of d > (day of the year) > Debug.Print strMonth, d > intCounter = intCounter + 1 'Increase the counter > End If > Next d > Next m > > Help in the translation: > DateAdd("m", m - 1, varStartMonth) === ADD_MONTHS(varStartMonth, m - > 1) > DateAdd("d", d - 1, varMonth) === varMonth + (d -1) > CDate("01/01/2006") === TO_DATE('01/01/2006', 'MM/DD/YYYY') > > I will let you finish the translation. If you complete the > translation, and it works in a PL/SQL program, post the results. > > Charles Hooper > PC Support Specialist > K&M Machine-Fabricating, Inc. >
YEAR_MONTH YEAR_DAY
JANUARY 1 JANUARY 2.
.
JANUARY 30 JANUARY 31 FEBRUARY 1 FEBRUARY 2
.
FEBRUARY 27 FEBRUARY 28
Total number of 365 records were inserted.
set serveroutput on size 1000000
CREATE TABLE yeardates (year_month varchar2(20) ,year_day integer);
Declare
Type name_varray is varray(12) of varchar2(20);
varray_name name_varray :=
name_varray(null,null,null,null,null,null,null,null,null,null,null,null);
Type date_varray is varray(31) of integer;
varray_date date_varray :=
date_varray(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31);
v_counter BINARY_INTEGER := 0;
BEGIN
varray_name(1) := 'January'; varray_name(2) := 'February'; varray_name(3) := 'March'; varray_name(4) := 'April'; varray_name(5) := 'May '; varray_name(6) := 'June'; varray_name(7) := 'July'; varray_name(8) := 'August'; varray_name(9) := 'September'; varray_name(10) := 'October'; varray_name(11) := 'November'; varray_name(12) := 'December'; dbms_output.put_line( 'YEAR_MONTH' || ' ' ||'YEAY_DAY'); FOR i IN 1..1 LOOP INSERT INTO yeardates (year_month) VALUES(varray_name(1)); FOR j IN 1..31 LOOP INSERT INTO yeardates (year_day) VALUES(varray_date(j)); dbms_output.put_line( rpad(varray_name(1),10) || ' ' ||varray_date(j));v_counter := v_counter + 1;
END LOOP;
END LOOP;
FOR i IN 1..1 LOOP
INSERT INTO yeardates (year_month) VALUES(varray_name(2)); FOR j IN 1..28 LOOP INSERT INTO yeardates (year_day) VALUES(varray_date(j)); dbms_output.put_line( varray_name(2) || ' ' ||varray_date(j));v_counter := v_counter + 1;
END LOOP;
END LOOP;
FOR i IN 1..1 LOOP
INSERT INTO yeardates (year_month) VALUES(varray_name(3)); FOR j IN 1..31 LOOP INSERT INTO yeardates (year_day) VALUES(varray_date(j)); dbms_output.put_line( rpad(varray_name(3),10) || ' ' ||varray_date(j));v_counter := v_counter + 1;
END LOOP;
END LOOP;
FOR i IN 1..1 LOOP
INSERT INTO yeardates (year_month) VALUES(varray_name(4)); FOR j IN 1..30 LOOP INSERT INTO yeardates (year_day) VALUES(varray_date(j)); dbms_output.put_line( rpad(varray_name(4),10) || ' ' ||varray_date(j));v_counter := v_counter + 1;
END LOOP;
END LOOP;
FOR i IN 1..1 LOOP
INSERT INTO yeardates (year_month) VALUES(varray_name(5)); FOR j IN 1..31 LOOP INSERT INTO yeardates (year_day) VALUES(varray_date(j)); dbms_output.put_line( rpad(varray_name(5),10) || ' ' ||varray_date(j));v_counter := v_counter + 1;
END LOOP;
END LOOP;
FOR i IN 1..1 LOOP
INSERT INTO yeardates (year_month) VALUES(varray_name(6)); FOR j IN 1..30 LOOP INSERT INTO yeardates (year_day) VALUES(varray_date(j)); dbms_output.put_line( rpad(varray_name(6),10) || ' ' ||varray_date(j));v_counter := v_counter + 1;
END LOOP;
END LOOP;
FOR i IN 1..1 LOOP
INSERT INTO yeardates (year_month) VALUES(varray_name(7)); FOR j IN 1..31 LOOP INSERT INTO yeardates (year_day) VALUES(varray_date(j)); dbms_output.put_line( rpad(varray_name(7),10) || ' ' ||varray_date(j));v_counter := v_counter + 1;
END LOOP;
END LOOP;
FOR i IN 1..1 LOOP
INSERT INTO yeardates (year_month) VALUES(varray_name(8)); FOR j IN 1..31 LOOP INSERT INTO yeardates (year_day) VALUES(varray_date(j)); dbms_output.put_line( rpad(varray_name(8),10) || ' ' ||varray_date(j));v_counter := v_counter + 1;
END LOOP;
END LOOP;
FOR i IN 1..1 LOOP
INSERT INTO yeardates (year_month) VALUES(varray_name(9)); FOR j IN 1..30 LOOP INSERT INTO yeardates (year_day) VALUES(varray_date(j)); dbms_output.put_line( varray_name(9) || ' ' ||varray_date(j));v_counter := v_counter + 1;
END LOOP;
END LOOP;
FOR i IN 1..1 LOOP
INSERT INTO yeardates (year_month) VALUES(varray_name(10)); FOR j IN 1..31 LOOP INSERT INTO yeardates (year_day) VALUES(varray_date(j)); dbms_output.put_line( rpad(varray_name(10),10) || ' '||varray_date(j));
END LOOP;
END LOOP;
FOR i IN 1..1 LOOP
INSERT INTO yeardates (year_month) VALUES(varray_name(11)); FOR j IN 1..30 LOOP INSERT INTO yeardates (year_day) VALUES(varray_date(j)); dbms_output.put_line(varray_name(11) || ' ' ||varray_date(j));v_counter := v_counter + 1;
END LOOP;
END LOOP;
FOR i IN 1..1 LOOP
INSERT INTO yeardates (year_month) VALUES(varray_name(12)); FOR j IN 1..31 LOOP INSERT INTO yeardates (year_day) VALUES(varray_date(j)); dbms_output.put_line( varray_name(12) || ' ' ||varray_date(j));v_counter := v_counter + 1;
END LOOP;
END LOOP;
dbms_output.put_line('Total number of ' || v_counter ||' records were
inserted.');
END;
/
Received on Fri Sep 08 2006 - 10:23:31 CDT
![]() |
![]() |