ERROR: malformed record literal: "", DETAIL: Missing left parenthesis?

Started by Emi Lualmost 15 years ago2 messagesgeneral
Jump to latest
#1Emi Lu
emilu@encs.concordia.ca

Good morning,

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') ;

Thank you,
Emi

#2Laurenz Albe
laurenz.albe@cybertec.at
In reply to: Emi Lu (#1)
Re: ERROR: malformed record literal: "", DETAIL: Missing left parenthesis?

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