Thread: RE: [SQL] Typecasting in SQL functions

RE: [SQL] Typecasting in SQL functions

From
"Jackson, DeJuan"
Date:
You might want to add a space before the '$'.  '=$' is a valid Postgres
operator so it thinks of it as one token.
        -DEJ

> -----Original Message-----
> From:    Konstantinos Vassiliadis [SMTP:vassilik@p22.cs.man.ac.uk]
> Sent:    Tuesday, July 14, 1998 7:34 AM
> To:    pgsql-sql@postgreSQL.org
> Subject:    [SQL] Typecasting in SQL functions
>
> Hi,
> I have the following
>
> create table reference
> (author text,
>  journal text);
>
> create table subref
>  (ref reference);
>
> I want to insert a tuple into relation 'subref'. I spotted in the
> mailing
> list that Nicolas Caillaud created a function to insert values to his
> relation 'book' so I thought I tried the same
>
> create function add_ref(text,text) returns reference
>  as 'select * from reference
>      where author=$1 and journal=$2'
>  language 'sql';
>
> I get the following
>  ERROR:  There is no operator '=$' for types 'text' and 'int4'
>         You will either have to retype this query using an explicit
> cast,
>         or you will have to define the operator using CREATE OPERATOR
>
> Obviously it confuses author=$1...
> I have looked at the documenation (Ch 4. 'Extending SQL Functions'
> PostgreSQL Programmer's Guide) where they typecast for the function
> new_emp().
>
> I have tried
>   <same query>
>   where author=::$1...
>
> and get the same error message.
>
> Can somebody help me on typecasting?
>
> Kostas Vassiliadis
>
>