No that is not I meant. The problem in Prepared statements is in that you
should determine SQL inside the function. I want to pass a query as a
parameter, as well as query parameters.
For example (I want to create a function like the following):

select *
  from exec_query(
                              /*query text  => */  'select f1, f2 from table
where f3 = $1' ,
                              /*param1      => */  1::integer
                          )
         as (f1 integer, f2 text)

so function exec_query got a query text as parameter, query parameters,
executed it and returned result as SETOF. In case of such a query had been
executed at least once, prepare step should be excluded (stored execution
plan should be used).

On 8/3/07, Sibte Abbas <[EMAIL PROTECTED]> wrote:
>
> On 8/2/07, Sergey Moroz <[EMAIL PROTECTED]> wrote:
> > The problem is that I can't find the way to exclude query parsing
> (prepare
> > step) for custom queries. In other words I want to create a function
> that
> > accepts a query text with "$1, $2, etc." and variables as params,
> executes
> > the query and returns a set of record. I could use 'execute' in plpgsql
> but
> > in such case a query will be parsed each time it is called. I check SPI
> and
> > found the way to store execution plans for the duration of the session,
> but
> > no convenient way to check if the plan was already generated for the
> query.
> > So I should create and store hash table by myself, and associate plan
> > pointers and query hash by myself. I'm not a C/C++ guy so it's not an
> easy
> > task for me :). Is there any way to solve the problem? By the way - why
> not
> > to store hashes for queries and execution plans in a shared pool to have
> an
> > opportunity not to parse already parsed queries for any session as
> Oracle
> > does?
> >
>
> Looks like you want to cache the query plans and then simply execute
> them in subsequent invocations. The answer to this is Prepared
> statements. Go to
> http://www.postgresql.org/docs/8.2/interactive/sql-prepare.html for
> more details.
>
> regards,
> -- Sibte
>



-- 
Sincerely,
Sergey Moroz

Reply via email to