On Tue, Oct 03, 2006 at 17:35:55 +0000, paallen@attglobal.net wrote:
>
> My function will take all the above info about the hole and down_hole_survey tables, and sample.hole_id and
sample.depth_metersand will calculate the coordinates. I need to put these coordinates into sample.x , sample.y and
sample.z.
>
> What I used to do was have one function that would return 3 values (x,y,z). Then create 3 more functions that would
callcall the main function and pull out the 3 values seperately to update the 3 seperate columns. It works fine but I
haveto call the main function 3 times which produces a slow performance.
>
> I hope that I explained it better this time.
If they are in the same table you can update all there in the same
update statement using syntax something like the following:
UPDATE sample SET x=(some expression), y=(some expression), z=(some expression) WHERE some condition;
Probably the simplest place to start is having your function do the update
rather than return the three values.
I think in 8.2 there will be an easier way to use the result of a function that
returns a row to update multiple columns in an update statement. (That
doesn't resu;t in calling the function three times.)