Temat: Błędny format timestamp?
Witam
mam tabelę mt_read do której wstawiam rekord:
INSERT INTO mt_read(mt_name, mt_value, mt_time, mt_quality)
VALUES ('dev(IP XXX_XXX_XXX_XXX)--mt42.REG119', 12345, '2011-11-11 12:11:10', 1);
do tej tabeli jest wyzwalacz:
CREATE OR REPLACE FUNCTION f_tri_ai_aktual_mt_read() RETURNS trigger AS
$$
DECLARE
licz INTEGER DEFAULT 0;
dg timestamp without time zone;
val INTEGER;
AwariaSkrot SMALLINT;
Pojazd INTEGER;
BitInfo SMALLINT;
str VARCHAR;
BEGIN
dg := NEW.mt_time;
val := NEW.mt_value;
AwariaSkrot := f_txt_AwariaSkrot_sint(NEW.mt_name);
Pojazd := f_txt_Pojazd_int(NEW.mt_name);
BitInfo := f_txt_BitInfo_sint(NEW.mt_name);
SELECT INTO str tablename FROM pg_tables WHERE tablename=(Pojazd::integer)::varchar;
IF not found THEN
PERFORM f_int_CreateTable_tbl(Pojazd);
END IF;
IF (BitInfo = 0) THEN
EXECUTE 'INSERT INTO "'||Pojazd||'" ("dtDataGodzina", "idfkAwarieSkroty", "sintNrBitu", "intWartosc")
VALUES ('||dg||', '||AwariaSkrot||', 0, '||val||')';
RETURN NEW;
END IF;
IF (BitInfo = 16) THEN
WHILE licz < 16
LOOP
IF ((val & (1<<licz))<>0) THEN
EXECUTE 'INSERT INTO "'||Pojazd||'" ("dtDataGodzina", "idfkAwarieGrupy", "sintNrBitu", "sintWartosc")
VALUES ('||dg||', '||AwariaSkrot||', '||licz + 1||', '||(val & (1<<licz))||')';
END IF;
licz=licz+1;
END LOOP;
RETURN NEW;
END IF;
END;
$$
LANGUAGE PLPGSQL;
po wstawieniu rekordu dane trafiają do mt_read jest OK ale wyskakuje błąd przy wpisaniu danych do innej tabeli z tego co rozumiem to błąd dotyczy złego formatu zapisu typu timestamp:
ERROR: syntax error at or near "12"
LINE 2: VALUES (2011-11-11 12:11:10, 22, 0, 12345)
^
ZAPYTANOE: INSERT INTO "365" ("dtDataGodzina", "idfkAwarieSkroty", "sintNrBitu", "intWartosc")
VALUES (2011-11-11 12:11:10, 22, 0, 12345)
KONTEKST: PL/pgSQL function "f_tri_ai_aktual_mt_read" line 27 at EXECUTE statement
********** Błąd **********
ERROR: syntax error at or near "12"
Stan SQL:42601
Kontekst:PL/pgSQL function "f_tri_ai_aktual_mt_read" line 27 at EXECUTE statement
w obydwu tabelach pola zapisu znacznika czasowego są identyczne...
Ostatnio edytowany przez WitekS (2009-03-11 15:23:22)