Christopher Kings-Lynne <chriskl@familyhealth.com.au> writes:
> test=# create function foo() returns integer as 'select 1;' language
> 'sql';
> CREATE FUNCTION
> test=# create function foo2() returns "integer" as 'select 1;' language
> 'sql';
> ERROR: Type "integer" does not exist
> Why can't you quote return types?
Because "integer" is not the actual internal name of the type.
> Isn't that inconsistent with the rest of Postgres?
No; you can't quote it anywhere else either. Nor can you quote it in
the SQL standard: INTEGER is a key word, not an identifier.
regards, tom lane