<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >SPI_saveplan</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REV="MADE" HREF="mailto:pgsql-docs@postgresql.org"><LINK REL="HOME" TITLE="PostgreSQL 8.0.11 Documentation" HREF="index.html"><LINK REL="UP" TITLE="Interface Functions" HREF="spi.html#SPI-INTERFACE"><LINK REL="PREVIOUS" TITLE="SPI_cursor_close" HREF="spi-spi-cursor-close.html"><LINK REL="NEXT" TITLE="Interface Support Functions" HREF="spi-interface-support.html"><LINK REL="STYLESHEET" TYPE="text/css" HREF="stylesheet.css"><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1"><META NAME="creation" CONTENT="2007-02-02T03:57:22"></HEAD ><BODY CLASS="REFENTRY" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="5" ALIGN="center" VALIGN="bottom" >PostgreSQL 8.0.11 Documentation</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="top" ><A HREF="spi-spi-cursor-close.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="10%" ALIGN="left" VALIGN="top" ><A HREF="spi-spi-cursor-close.html" >Fast Backward</A ></TD ><TD WIDTH="60%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="top" ><A HREF="spi.html" >Fast Forward</A ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="top" ><A HREF="spi-interface-support.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><H1 ><A NAME="SPI-SPI-SAVEPLAN" ></A >SPI_saveplan</H1 ><DIV CLASS="REFNAMEDIV" ><A NAME="AEN35459" ></A ><H2 >Name</H2 >SPI_saveplan -- save a plan</DIV ><A NAME="AEN35462" ></A ><DIV CLASS="REFSYNOPSISDIV" ><A NAME="AEN35464" ></A ><H2 >Synopsis</H2 ><PRE CLASS="SYNOPSIS" >void * SPI_saveplan(void * <TT CLASS="PARAMETER" >plan</TT >)</PRE ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN35467" ></A ><H2 >Description</H2 ><P > <CODE CLASS="FUNCTION" >SPI_saveplan</CODE > saves a passed plan (prepared by <CODE CLASS="FUNCTION" >SPI_prepare</CODE >) in memory protected from freeing by <CODE CLASS="FUNCTION" >SPI_finish</CODE > and by the transaction manager and returns a pointer to the saved plan. This gives you the ability to reuse prepared plans in the subsequent invocations of your procedure in the current session. You may save the pointer returned in a local variable. Always check if this pointer is <TT CLASS="SYMBOL" >NULL</TT > or not either when preparing a plan or using an already prepared plan in <CODE CLASS="FUNCTION" >SPI_execute_plan</CODE >. </P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN35475" ></A ><H2 >Arguments</H2 ><P ></P ><DIV CLASS="VARIABLELIST" ><DL ><DT ><TT CLASS="LITERAL" >void * <TT CLASS="PARAMETER" >plan</TT ></TT ></DT ><DD ><P > the plan to be saved </P ></DD ></DL ></DIV ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN35484" ></A ><H2 >Return Value</H2 ><P > Pointer to the saved plan; <TT CLASS="SYMBOL" >NULL</TT > if unsuccessful. On error, <TT CLASS="VARNAME" >SPI_result</TT > is set thus: <P ></P ></P><DIV CLASS="VARIABLELIST" ><DL ><DT ><TT CLASS="SYMBOL" >SPI_ERROR_ARGUMENT</TT ></DT ><DD ><P > if <TT CLASS="PARAMETER" >plan</TT > is <TT CLASS="SYMBOL" >NULL</TT > </P ></DD ><DT ><TT CLASS="SYMBOL" >SPI_ERROR_UNCONNECTED</TT ></DT ><DD ><P > if called from an unconnected procedure </P ></DD ></DL ></DIV ><P> </P ></DIV ><DIV CLASS="REFSECT1" ><A NAME="AEN35502" ></A ><H2 >Notes</H2 ><P > If one of the objects (a table, function, etc.) referenced by the prepared plan is dropped during the session then the results of <CODE CLASS="FUNCTION" >SPI_execute_plan</CODE > for this plan will be unpredictable. </P ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="spi-spi-cursor-close.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="spi-interface-support.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >SPI_cursor_close</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="spi.html#SPI-INTERFACE" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Interface Support Functions</TD ></TR ></TABLE ></DIV ></BODY ></HTML >