Error defining composite types and returning ROWTYPEs

Started by Geoffrey Giesemannalmost 21 years ago2 messagesgeneral
Jump to latest
#1Geoffrey Giesemann
geoffwa@iinet.net.au

CREATE TABLE test_table (
some_column integer,
another_column text
);

CREATE TYPE test_type as (
some_type test_table.some_column%TYPE
);

Gives me:
ERROR: syntax error at or near "%" at character 62
LINE 2: some_type test_table.some_column%TYPE

I also can't define rowtypes as return types on functions:
CREATE OR REPLACE FUNCTION get_test_table_single()
RETURNS test_table%ROWTYPE AS $$
DECLARE
v_single test_table%ROWTYPE;
BEGIN
SELECT * INTO v_single FROM test_table LIMIT 1;
RETURN v_single;
END;
$$ LANGUAGE plpgsql;

Gives me:
ERROR: syntax error at or near "%" at character 65
LINE 2: RETURNS test_table%ROWTYPE AS $$

Can somebody tell me what I'm doing wrong? This is driving me insane.

Geoff

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Geoffrey Giesemann (#1)
Re: Error defining composite types and returning ROWTYPEs

Geoffrey Giesemann <geoffwa@iinet.net.au> writes:

CREATE TYPE test_type as (
some_type test_table.some_column%TYPE
);

Gives me:
ERROR: syntax error at or near "%" at character 62
LINE 2: some_type test_table.some_column%TYPE

I also can't define rowtypes as return types on functions:
CREATE OR REPLACE FUNCTION get_test_table_single()
RETURNS test_table%ROWTYPE AS $$

%ROWTYPE is a plpgsql-ism, not a SQL construct. %TYPE isn't a SQL
construct either --- AFAIR we only support it in the very limited
context of CREATE FUNCTION's argument and result type declarators.

regards, tom lane