Обсуждение: SELECTing into usertype, how to do it?

Поиск
Список
Период
Сортировка

SELECTing into usertype, how to do it?

От
Mario Splivalo
Дата:
I have a type, declared like this:

CREATE TYPE type_a AS (member_a varchar,member_b bool
);

There is also a table:

CREATE TABLE table_a (col_a varchar,col_b bool,col_c int4
);

Now, in a function, I declared type_var variable of type type_a:

DECLARE    type_var type_a;

And then, when I want to fill in the type_var, i do this:
type_var.member_a := col_a FROM table_a WHERE col_c = 5;type_var.member_b := col_b FROM table_a WHERE col_c = 5;

Is there a way to fill in the type_var, but from just one statement?
Here I have two 'selects' on table_a, and that seems as bit expensive
when iterated a lot of times.

I guess I could do:SELECT col_a, col_b INTO type_var.member_a, type_var.member_b FROM
table_A WHERE col_c = 5;

but that is a bit hard to read :)

Are there more options on doing what I'd like to do?
Mario
-- 
Mario Splivalo
Mob-Art
mario.splivalo@mobart.hr

"I can do it quick, I can do it cheap, I can do it well. Pick any two."




Re: SELECTing into usertype, how to do it?

От
"A. Kretschmer"
Дата:
am  25.04.2006, um 14:03:07 +0200 mailte Mario Splivalo folgendes:
> 
> And then, when I want to fill in the type_var, i do this:
> 
>     type_var.member_a := col_a FROM table_a WHERE col_c = 5;
>     type_var.member_b := col_b FROM table_a WHERE col_c = 5;
> 
> Is there a way to fill in the type_var, but from just one statement?
> Here I have two 'selects' on table_a, and that seems as bit expensive
> when iterated a lot of times.
> 
> I guess I could do:
>     SELECT col_a, col_b INTO type_var.member_a, type_var.member_b FROM
> table_A WHERE col_c = 5;
> 
> but that is a bit hard to read :)
> 
> Are there more options on doing what I'd like to do?

select into type_var col_a, col_b from table_a ... ;



HTH, Andreas
-- 
Andreas Kretschmer    (Kontakt: siehe Header)
Heynitz:  035242/47215,      D1: 0160/7141639
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net===    Schollglas Unternehmensgruppe    === 


Re: SELECTing into usertype, how to do it?

От
Mario Splivalo
Дата:
On Tue, 2006-04-25 at 14:21 +0200, A. Kretschmer wrote:
> am  25.04.2006, um 14:03:07 +0200 mailte Mario Splivalo folgendes:
> > 
> > And then, when I want to fill in the type_var, i do this:
> > 
> >     type_var.member_a := col_a FROM table_a WHERE col_c = 5;
> >     type_var.member_b := col_b FROM table_a WHERE col_c = 5;
> > 
> > Is there a way to fill in the type_var, but from just one statement?
> > Here I have two 'selects' on table_a, and that seems as bit expensive
> > when iterated a lot of times.
> > 
> > I guess I could do:
> >     SELECT col_a, col_b INTO type_var.member_a, type_var.member_b FROM
> > table_A WHERE col_c = 5;
> > 
> > but that is a bit hard to read :)
> > 
> > Are there more options on doing what I'd like to do?
> 
> select into type_var col_a, col_b from table_a ... ;
> 

Thnx... still, that SELECT INTO looks pretty anoying... it would be neat
to type just: type_var := col_a, col_b FROM ...

I guess the code would look much more readable...
Mario
-- 
Mario Splivalo
Mob-Art
mario.splivalo@mobart.hr

"I can do it quick, I can do it cheap, I can do it well. Pick any two."




Re: SELECTing into usertype, how to do it?

От
"A. Kretschmer"
Дата:
am  25.04.2006, um 14:25:50 +0200 mailte Mario Splivalo folgendes:
> > 
> > select into type_var col_a, col_b from table_a ... ;
> > 
> 
> Thnx... still, that SELECT INTO looks pretty anoying... it would be neat
> to type just: 
>     type_var := col_a, col_b FROM ...

well-nigh:
type_var := (col_a, col_b) FROM ...


Andreas
-- 
Andreas Kretschmer    (Kontakt: siehe Header)
Heynitz:  035242/47215,      D1: 0160/7141639
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net===    Schollglas Unternehmensgruppe    ===