vBulletin Search Engine Optimization
| |||||||
| Register | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| ||||
| hai all, I have a plpgsql function and I am using postgresl 8.1.9 CREATE OR REPLACE FUNCTION get_vehicle_id(INT) RETURNS SETOF RECORD AS $BODY$ DECLARE r RECORD; int_day ALIAS FOR $1; BEGIN FOR r in SELECT fk_bint_old_vehicle_number AS vehicle_id FROM tbl_rac_vehicle_replacement WHERE dat_replacement BETWEEN now() - interval '% day',int_day AND now() LOOP RETURN NEXT r; END LOOP; RETURN; END $BODY$ LANGUAGE 'plpgsql'; But i cant craete the function The error message is: ERROR: syntax error at or near "," at character 137 QUERY: SELECT fk_bint_old_vehicle_number AS vehicle_id FROM tbl_rac_vehicle_replacement WHERE dat_replacement BETWEEN now() - interval '% day', $1 AND now() CONTEXT: SQL statement in PL/PgSQL function "test" near line 11 LINE 1: ...E dat_replacement BETWEEN now() - interval '% day', $1 AND ... The problem line is BETWEEN now() - interval '% day', $1 AND now() I want to select dat_replacement between now () and now - 5 dyas or now -7 days like that i want to pass the integer value as argument to the function. I also tried like this WHERE dat_replacement BETWEEN now() - interval int_day day AND now(),but it also failed. Please help me . regards: Anoop |
| ||||
| am Thu, dem 03.04.2008, um 15:54:56 +0530 mailte Anoop G folgendes: > hai all, > I want to select dat_replacement between now () and now - 5 dyas or now -7 > days like that i want to pass the integer value as argument to the function. I show you a similar solution: test=*# select * from foo; i | ts ---+------------------------------- 1 | 2008-03-31 15:11:36.214272+02 (1 row) test=*# create or replace function f1(in i int, out t timestamptz) returns setof timestamptz as $$ declare r record;s timestamptz; begin s:=current_timestamp-i * '1day'::interval; for r in select * from foo where ts between s and current_timestamp loop raise notice '--> %',$1; t:=r.ts; return next; end loop; raise notice '%',s; end; $$ language plpgsql; CREATE FUNCTION test=*# select * from f1(1); NOTICE: 2008-04-02 13:05:08.48866+02 t --- (0 rows) test=*# select * from f1(10); NOTICE: --> 10 NOTICE: 2008-03-24 13:05:08.48866+01 t ------------------------------- 2008-03-31 15:11:36.214272+02 (1 row) More examples with IN/OUT - parameters: http://people.planetpostgresql.org/x....html#extended HTH, Andreas -- Andreas Kretschmer Kontakt: Heynitz: 035242/47150, D1: 0160/7141639 (mehr: -> Header) GnuPG-ID: 0x3FFF606C, privat 0x7F4584DA http://wwwkeys.de.pgp.net -- Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-sql |