Thread: Array Question

Array Question

From
Terry Lee Tucker
Date:
Greetings:

I have a customer history table that contains several integer and decimal
arrays for recording sales and load count information for each of the 12
months. I'm trying to modify one of the arrays in a pre-update trigger. I'm
looping as in:

for x in 1..12 loop
    array[x] = <some_value>;
    .
    .
    .
end loop;

This will not compile. I get the following error:

ERROR:  syntax error at or near "["

If I comment that line out, all works well. Any ideas?

Thanks...

--
Quote: 73
"Inasmuch as these people draw near with their mouths
 And honor Me with their lips,
 But have removed their hearts far from Me,
 And their fear toward Me is taught by the commandment of men..."

 -- Isiah 29:13

 Work: 1-336-372-6812
 Cell: 1-336-363-4719
email: terry@esc1.com

Re: Array Question

From
Tom Lane
Date:
Terry Lee Tucker <terry@esc1.com> writes:
>     array[x] = <some_value>;

> This will not compile. I get the following error:
> ERROR:  syntax error at or near "["

plpgsql can do this since 7.4.  What PG version are you running?

            regards, tom lane

Re: Array Question

From
Terry Lee Tucker
Date:
Sorry, my brain was fried last night. Here is the version:

PostgreSQL 7.3.6-RH on i386-redhat-linux-gnu, compiled by GCC
i386-redhat-linux-gcc (GCC) 3.2.3 20030502 (Red Hat Linux 3.2.3-39)

So, looks like I'm a little short on version. How do I handle with 7.3?

On Friday 29 October 2004 10:07 pm, Tom Lane saith:
> Terry Lee Tucker <terry@esc1.com> writes:
> >     array[x] = <some_value>;
> >
> > This will not compile. I get the following error:
> > ERROR:  syntax error at or near "["
>
> plpgsql can do this since 7.4.  What PG version are you running?
>
>             regards, tom lane
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)

--

 Work: 1-336-372-6812
 Cell: 1-336-363-4719
email: terry@esc1.com

Re: Array Question

From
Terry Lee Tucker
Date:
The documentation reads as follows:
"An array value can be replaced completely:

UPDATE sal_emp SET pay_by_quarter = '{25000,25000,27000,27000}'
    WHERE name = 'Carol';

 or updated at a single element:

UPDATE sal_emp SET pay_by_quarter[4] = 15000
    WHERE name = 'Bill';

 or updated in a slice:

UPDATE sal_emp SET pay_by_quarter[1:2] = '{27000,27000}'
    WHERE name = 'Carol'; "

I try this simple statement and get the same error:

UPDATE chist SET broker[10] = 195 WHERE code = 'AAATMOUS000';

Any ideas?
Thanks...

On Friday 29 October 2004 10:07 pm, Tom Lane saith:
> Terry Lee Tucker <terry@esc1.com> writes:
> >     array[x] = <some_value>;
> >
> > This will not compile. I get the following error:
> > ERROR:  syntax error at or near "["
>
> plpgsql can do this since 7.4.  What PG version are you running?
>
>             regards, tom lane
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)

--
 Work: 1-336-372-6812
 Cell: 1-336-363-4719
email: terry@esc1.com

Re: Array Question

From
Terry Lee Tucker
Date:
Nevermind, the error was coming from the trigger. If I comment out the line in
the trigger, the second option below, "or updated at a single element", works
from the psql interface. It just doesn't work that way in the trigger code
:o(

On Saturday 30 October 2004 05:35 am, Terry Lee Tucker saith:
> The documentation reads as follows:
> "An array value can be replaced completely:
>
> UPDATE sal_emp SET pay_by_quarter = '{25000,25000,27000,27000}'
>     WHERE name = 'Carol';
>
>  or updated at a single element:
>
> UPDATE sal_emp SET pay_by_quarter[4] = 15000
>     WHERE name = 'Bill';
>
>  or updated in a slice:
>
> UPDATE sal_emp SET pay_by_quarter[1:2] = '{27000,27000}'
>     WHERE name = 'Carol'; "
>
> I try this simple statement and get the same error:
>
> UPDATE chist SET broker[10] = 195 WHERE code = 'AAATMOUS000';
>
> Any ideas?
> Thanks...
>
> On Friday 29 October 2004 10:07 pm, Tom Lane saith:
> > Terry Lee Tucker <terry@esc1.com> writes:
> > >     array[x] = <some_value>;
> > >
> > > This will not compile. I get the following error:
> > > ERROR:  syntax error at or near "["
> >
> > plpgsql can do this since 7.4.  What PG version are you running?
> >
> >             regards, tom lane
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 2: you can get off all lists at once with the unregister command
> >     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
>
> --
>  Work: 1-336-372-6812
>  Cell: 1-336-363-4719
> email: terry@esc1.com
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)

--
Quote: 60
"Power tempts even the best of men to take liberties with the truth."

 --Joseph Sobran

 Work: 1-336-372-6812
 Cell: 1-336-363-4719
email: terry@esc1.com

Re: Array Question

From
Tom Lane
Date:
Terry Lee Tucker <terry@esc1.com> writes:
> PostgreSQL 7.3.6-RH on i386-redhat-linux-gnu, compiled by GCC

> So, looks like I'm a little short on version. How do I handle with 7.3?

You update to 7.4.  plpgsql couldn't handle this before.

            regards, tom lane