Inserting a record returned from a function
От | p9e883002@sneakemail.com |
---|---|
Тема | Inserting a record returned from a function |
Дата | |
Msg-id | 18407-81584@sneakemail.com обсуждение исходный текст |
Ответы |
Re: Inserting a record returned from a function
|
Список | pgsql-novice |
I have a function defined as: CREATE OR REPLACE FUNCTION word_doc_from_raw(character varying, character varying, bytea) RETURNS record AS $BODY$ SELECT ROW( id_from_word( $1 ), id_from_doc_name( $2 ), $3 ) $BODY$ LANGUAGE 'sql' STABLE; And I'm trying to INSERT the returned record into a table defined as: CREATE TABLE word_doc ( word_id integer NOT NULL, doc_id integer NOT NULL, posns bytea, CONSTRAINT word_doc_pkey PRIMARY KEY (word_id, doc_id), CONSTRAINT word_doc_word_id_fkey FOREIGN KEY (word_id) REFERENCES words (word_id) MATCH SIMPLE ON UPDATE RESTRICT ON DELETE RESTRICT ) WITHOUT OIDS; with the statement: insert into word_doc ( word_id, doc_id, posns ) values( (word_doc_from_raw( 'word', 'document.name', 'some raw data' )).* ) and getting the error: ERROR: record type has not been registered SQL state: 42809 Does this mean I must always define a type in order to do anything useful with a record returned from a function? I've seen references in the docs to "casting" and a syntax like: ROW( ...)::tag Is this useful in this situation? Cheers, buk.
В списке pgsql-novice по дате отправления: