Re: composite type and assignment in plpgsql

From: Ron St-Pierre <rstpierre(at)syscor(dot)com>
To: mail(at)webthatworks(dot)it, pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Re: composite type and assignment in plpgsql
Date: 2004-04-27 17:18:56
Message-ID: 408E9600.9080903@syscor.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Ron St-Pierre wrote:

> Ivan Sergio Borgonovo wrote:
>
>> what's wrong with this?
>>
>> create type tSession
>> as ( ty_found boolean, ty_Session char(32) );
>>
>> create or replace function GetSessionID( integer )
>> returns tSession as '
>> declare
>> thisSession tSession;
>> begin
>> --HERE!!!
>> thisSession := ( ''t'', md5( now( ) || rand( ) ) );
>>
> - md5 takes TEXT as an argument, not a numeric type
> - assign each variable of type tSession to its corresponding value:
> thisSession.ty_found := ''t'';
> thisSession.ty_session := md5(CAST((now( )) AS TEXT));
> I haven't looked up the rand() function, but you can see from this how
> you would cast it and now() to text.
>
>> return thisSession;
>> end;
>> ' language plpgsql;
>>
>>
>> thx
>>
>>
>> ---------------------------(end of broadcast)---------------------------
>> TIP 7: don't forget to increase your free space map settings
>>
>>
>>
>>
> And then you can get the results:
> select * from getsessionid(1);
> imperial=# select * from getsessionid(1);
> ty_found | ty_session
> ----------+----------------------------------
> t | cf76cca2b562a0ead48d3eb3810f51cc
> (1 row)
>
>
> hth
>
> Ron
>
>
In the above reply, I forgot to mention that you are not using the
integer you are passing in as an argument. If you need it (rand()?)
you'll have to declare it:
myInt ALIAS FOR $1;
or use it explicitly with just the name: $1

Ron

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Taber, Mark 2004-04-27 17:34:19 BLOB help needed...
Previous Message Ron St-Pierre 2004-04-27 17:12:13 Re: composite type and assignment in plpgsql