| 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
![]() |
![]() |