Re: Function - sequence - cast

From: Ron St-Pierre <rstpierre(at)syscor(dot)com>
To: Richard Huxton <dev(at)archonet(dot)com>, pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Re: Function - sequence - cast
Date: 2004-05-19 17:09:15
Message-ID: 40AB94BB.0@syscor.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Richard Huxton wrote:

> Ron St-Pierre wrote:
>
>> I am trying to use a sequence value in a function but I keep getting
>> an error message:
>>
>> WARNING: Error occurred while executing PL/pgSQL function
>> correctaddress
>>
>> WARNING: line 8 at SQL statement
>>
>> ERROR: column "addressid" is of type integer but expression is of
>> type character varying
>> You will need to rewrite or cast the expression
>>
>>
>> And the function looks like:
>>
>> CREATE FUNCTION correctAddress(INT) RETURNS INT AS '
>> DECLARE
>> user_id ALIAS FOR $1;
>>
>> old_addr INT; new_addr INT; BEGIN
>>
>> PERFORM nextval(''public.address_addressid_seq'');
>
>
> If you've set up addressID as a SERIAL then this nextval() isn't
> necessary.
>
>> INSERT INTO address (SELECT strProvince, strAddress FROM
>> address WHERE addressID = (SELECT addressID FROM companies WHERE
>> companyID = (SELECT companyID FROM users WHERE userID=user_id)));
>
>
> I'm using the force here, but the problem might be here instead. What
> are the columns on the address table, and if addressID is the first
> one is strProvince a varchar?

WOW! Amazing use of the force, strProvince is a text field :-) You're
correct, the first column is an in and strProvince is text. Thanks for
pointing out the obvious, my 'real' function has about 15 more fields
and I was too busy looking at other things to notice.

>
>> UPDATE users SET adressID =
>> CAST(currval(''public.tbladdress_addressid_seq'') AS INTEGER) WHERE
>> userID=user_id;
>> -- ---> ^ ^
>> ^ ^ ^ ^ = ?
>
Thanks Richard.

Ron

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Sam Masiello 2004-05-19 17:12:14 Dblink question
Previous Message Christopher Browne 2004-05-19 16:46:07 Re: Is using cross-version pg_autovacuum possible/safe?