Re: [GENERAL] error: insert has more expressions than target column

2004-09-10 Thread Björn Lundin
Dino Vliet wrote:

 MUCH better nowI did manage to get an insert into
 the table lessons with these adjustments...BUT now it
 seems the FOR LOOP didn't work because I only get 1
 record and expected that I would get 8 records due to
 the i variabele.
 
 What could be wrong?
 
 My code is now:
 
 CREATE FUNCTION vulalles() RETURNS trigger AS '
 BEGIN
 FOR i in 0..7 LOOP
 INSERT INTO lessons (..)
 SELECT dayofweek,startdate + (i*7), enddate +
 (i*7),...;
 RETURN NEW;
 END LOOP;
 END;
 ' LANGUAGE plpgsql;

Is the 'RETURN NEW' statement supposed to be _BEFORE_ end loop?
To me, it looks like you are returning from the function
in the first loop turn.
/Njörn

---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster


Re: [GENERAL] error: insert has more expressions than target column

2004-09-07 Thread Tom Lane
Dino Vliet [EMAIL PROTECTED] writes:
 I'm getting the same error without brackets.

The message says you are trying to insert more values than the lessons
table has columns.

regards, tom lane

---(end of broadcast)---
TIP 8: explain analyze is your friend


Re: [GENERAL] error: insert has more expressions than target column

2004-09-07 Thread Dino Vliet
MUCH better nowI did manage to get an insert into
the table lessons with these adjustments...BUT now it
seems the FOR LOOP didn't work because I only get 1
record and expected that I would get 8 records due to
the i variabele.

What could be wrong?

My code is now:

CREATE FUNCTION vulalles() RETURNS trigger AS '
BEGIN
FOR i in 0..7 LOOP
INSERT INTO lessons (..)
SELECT dayofweek,startdate + (i*7), enddate +
(i*7),...;
RETURN NEW;
END LOOP;
END;
' LANGUAGE plpgsql;


--- Richard Huxton [EMAIL PROTECTED] wrote:

 Dino Vliet wrote:
  I'm getting the same error without brackets.
 
 Check the columns in table lessons matches the
 columns in your select.
 
  The EXECUTE statement was because I read something
  about executing dynamic content.
  
  I want to add 7 days to the date value of
 startdate
  and want to repeat it every week. Because there
 are 8
  weeks I choose to do that with the for loop going
 from
  0 to 7.
 
 Looking closer, I can see the problem. You're
 treating the column from 
 the select as a variable (which it isn't).
 
 Try something like:
 
 INSERT INTO lessons (col_name1, col_name2, ...)
 SELECT dayofweek, startdate + (i*7), endate + (i*7),
 startime, ...
 
 -- 
Richard Huxton
Archonet Ltd
 




__
Do you Yahoo!?
Yahoo! Mail - 50x more storage than other providers!
http://promotions.yahoo.com/new_mail

---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
  subscribe-nomail command to [EMAIL PROTECTED] so that your
  message can get through to the mailing list cleanly