<!--
-$Header: /cvsroot/pgsql/doc/src/sgml/Attic/plsql.sgml,v 2.59 2002/06/15 19:34:51 momjian Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/Attic/plsql.sgml,v 2.60 2002/06/24 23:12:06 tgl Exp $
-->
<chapter id="plpgsql">
This executes a <literal>SELECT</literal>
<replaceable>query</replaceable> and discards the
result. <application>PL/pgSQL</application> variables are substituted
- in the query as usual.
+ in the query as usual. Also, the special variable FOUND is set to
+ true if the query produced at least one row, or false if it produced
+ no rows.
</para>
<note>
<para>
An example:
<programlisting>
-PERFORM create_mv(''cs_session_page_requests_mv'',''
- SELECT session_id, page_id, count(*) AS n_hits,
- sum(dwell_time) AS dwell_time, count(dwell_time) AS dwell_count
- FROM cs_fact_table
- GROUP BY session_id, page_id '');
+PERFORM create_mv(''cs_session_page_requests_mv'', my_query);
</programlisting>
</para>
</sect2>
* procedural language
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_exec.c,v 1.55 2002/03/25 07:41:10 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_exec.c,v 1.56 2002/06/24 23:12:06 tgl Exp $
*
* This software is copyrighted by Jan Wieck - Hamburg.
*
else
{
/*
- * PERFORM: evaluate query and discard result. This cannot share
- * code with the assignment case since we do not wish to
- * constraint the discarded result to be only one row/column.
+ * PERFORM: evaluate query and discard result (but set FOUND
+ * depending on whether at least one row was returned).
+ *
+ * This cannot share code with the assignment case since we do not
+ * wish to constrain the discarded result to be only one row/column.
*/
int rc;
if (rc != SPI_OK_SELECT)
elog(ERROR, "query \"%s\" didn't return data", expr->query);
+ exec_set_found(estate, (estate->eval_processed != 0));
+
exec_eval_cleanup(estate);
}