Hi,
I had no try wheter this solves your problem, but have you conciddered using
an array or a self-written fcn which dicards your results
i.E. SELECT my_discard_but_last( q1(), q2(), q3());
or SELECT ARRAY[ q1(), q2(), q3() ];
or SELECT ROW(q1(), q2(), q3()) as my_tripel_type;
Have you considdered CASTs?
These are just ideas
|-----Original Message-----
|From: Jan B. [mailto:jan@monso.de]
|Sent: Sonntag, 22. Mai 2005 11:24
|To: pgsql-sql@postgresql.org
|Subject: [SQL] Calling Functions in RULEs
|
|
|Hello,
|
|I would like to call multiple PL/pgSQL procedures (i.e. functions
|returning void) from INSERT, UPDATE and DELETE RULEs.
|
|Using "SELECT some_procedure();" is a possible way to do that, but it
|causes a dummy result table to be delivered to the application
|invoking
|the INSERT/UPDATE/DELETE. When using multiple SELECTs to call multiple
|functions inside the RULE, multiple result tables will be delivered to
|the application, which is very unhandy and causes trouble especially
|when using asynchronous command processing. Though "psql" does
|only show
|the last result table, all dummy result tables have to be fetched by
|PGgetResult(), when using asynchronous mode with libpq.
|
|Is there any tidy way to call a void-function inside a RULE without
|creating a result table that is passed to the application?
|Using a command like "UPDATE dummy_table SET dummy=1 WHERE
|some_procedure() NOTNULL;" would work, but that would be very dirty.
|
|Does a command like "PERFORM" (from PG/pgSQL) exist in SQL too, which
|discards the (void) result of the function call?
|
|
|Thanks for helping
|
|Jan Behrens
|||
|
|---------------------------(end of
|broadcast)---------------------------
|TIP 2: you can get off all lists at once with the unregister command
| (send "unregister YourEmailAddressHere" to
|majordomo@postgresql.org)
|