From: | "Albe Laurenz" <laurenz(dot)albe(at)wien(dot)gv(dot)at> |
---|---|
To: | <emilu(at)encs(dot)concordia(dot)ca>, <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: ERROR: malformed record literal: "", DETAIL: Missing left parenthesis? |
Date: | 2011-07-07 08:06:31 |
Message-ID: | D960CB61B694CF459DCFB4B0128514C206A3E0AF@exadv11.host.magwien.gv.at |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
> A question about: ERROR: malformed record literal: ""
> DETAIL: Missing left parenthesis.
>
> Can someone tell me what cause the error?
>
> ========================
> Table z_drop;
> Column | Type
> -------------+------------------------
> run_date | character varying(128)
> adm_year | character varying(4)
> adm_sess | character varying(1)
> faculty | character varying(128)
> ac_cycle | character varying(128)
> deg_code | character varying(128)
> discipline | character varying(128)
> thesis | character varying(128)
> elig_stype | character varying(128)
> stud_source | character varying(128)
> applied | numeric
> reviewed | numeric
> accepted | numeric
> confirmed | numeric
> registered | numeric
> hold | numeric
> forward | numeric
> refused | numeric
> cancelled | numeric
> other | numeric
> pending | numeric
>
>
> PREPARE test(z_drop) AS INSERT INTO z_drop VALUES ($1, $2, $3,
> $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17,
> $18, $19, $20, $21) ;
>
>
>
> EXECUTE test('', '1', '1', '1', '1', '1', '1', '1', '1', '', 1, 1,
> '1', '0', '0', '0', '0', '0', '0', '0', '0') ;
Your EXECUTES expects one argument of type "z_drop", so it goes ahead
and tries to convert '' (the first argument) into something of type
"z_drop". This is a row type, so its string representation would have
to start with "(". It doesn't, hence the error message.
A correct (simplified) example would be:
CREATE TABLE z_drop (id integer PRIMARY KEY, val text);
PREPARE x(z_drop) AS INSERT INTO z_drop VALUES ($1.id, $1.val);
(there is only one argument of type z_drop)
EXECUTE x(ROW(1, 'mama'));
(with an explicit row constructor)
or
EXECUTE x((2, 'papa'));
Yours,
Laurenz Albe
From | Date | Subject | |
---|---|---|---|
Next Message | Craig Ringer | 2011-07-07 08:42:18 | Re: failed archive command |
Previous Message | jc9121 | 2011-07-07 06:17:50 | Re: PL/R download |