ok
Direktori : /opt/alt/postgresql11/usr/share/doc/alt-postgresql11-9.2.24/html/ |
Current File : //opt/alt/postgresql11/usr/share/doc/alt-postgresql11-9.2.24/html/ecpg-process.html |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >Processing Embedded SQL Programs</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 9.2.24 Documentation" HREF="index.html"><LINK REL="UP" TITLE="ECPG - Embedded SQL in C" HREF="ecpg.html"><LINK REL="PREVIOUS" TITLE="Preprocessor Directives" HREF="ecpg-preproc.html"><LINK REL="NEXT" TITLE="Library Functions" HREF="ecpg-library.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="2017-11-06T22:43:11"></HEAD ><BODY CLASS="SECT1" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="5" ALIGN="center" VALIGN="bottom" ><A HREF="index.html" >PostgreSQL 9.2.24 Documentation</A ></TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="top" ><A TITLE="Preprocessor Directives" HREF="ecpg-preproc.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="10%" ALIGN="left" VALIGN="top" ><A HREF="ecpg.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="60%" ALIGN="center" VALIGN="bottom" >Chapter 33. <SPAN CLASS="APPLICATION" >ECPG</SPAN > - Embedded <ACRONYM CLASS="ACRONYM" >SQL</ACRONYM > in C</TD ><TD WIDTH="20%" ALIGN="right" VALIGN="top" ><A TITLE="Library Functions" HREF="ecpg-library.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="SECT1" ><H1 CLASS="SECT1" ><A NAME="ECPG-PROCESS" >33.10. Processing Embedded SQL Programs</A ></H1 ><P > Now that you have an idea how to form embedded SQL C programs, you probably want to know how to compile them. Before compiling you run the file through the embedded <ACRONYM CLASS="ACRONYM" >SQL</ACRONYM > <ACRONYM CLASS="ACRONYM" >C</ACRONYM > preprocessor, which converts the <ACRONYM CLASS="ACRONYM" >SQL</ACRONYM > statements you used to special function calls. After compiling, you must link with a special library that contains the needed functions. These functions fetch information from the arguments, perform the <ACRONYM CLASS="ACRONYM" >SQL</ACRONYM > command using the <SPAN CLASS="APPLICATION" >libpq</SPAN > interface, and put the result in the arguments specified for output. </P ><P > The preprocessor program is called <TT CLASS="FILENAME" >ecpg</TT > and is included in a normal <SPAN CLASS="PRODUCTNAME" >PostgreSQL</SPAN > installation. Embedded SQL programs are typically named with an extension <TT CLASS="FILENAME" >.pgc</TT >. If you have a program file called <TT CLASS="FILENAME" >prog1.pgc</TT >, you can preprocess it by simply calling: </P><PRE CLASS="PROGRAMLISTING" >ecpg prog1.pgc</PRE ><P> This will create a file called <TT CLASS="FILENAME" >prog1.c</TT >. If your input files do not follow the suggested naming pattern, you can specify the output file explicitly using the <TT CLASS="OPTION" >-o</TT > option. </P ><P > The preprocessed file can be compiled normally, for example: </P><PRE CLASS="PROGRAMLISTING" >cc -c prog1.c</PRE ><P> The generated C source files include header files from the <SPAN CLASS="PRODUCTNAME" >PostgreSQL</SPAN > installation, so if you installed <SPAN CLASS="PRODUCTNAME" >PostgreSQL</SPAN > in a location that is not searched by default, you have to add an option such as <TT CLASS="LITERAL" >-I/usr/local/pgsql/include</TT > to the compilation command line. </P ><P > To link an embedded SQL program, you need to include the <TT CLASS="FILENAME" >libecpg</TT > library, like so: </P><PRE CLASS="PROGRAMLISTING" >cc -o myprog prog1.o prog2.o ... -lecpg</PRE ><P> Again, you might have to add an option like <TT CLASS="LITERAL" >-L/usr/local/pgsql/lib</TT > to that command line. </P ><P > If you manage the build process of a larger project using <SPAN CLASS="APPLICATION" >make</SPAN >, it might be convenient to include the following implicit rule to your makefiles: </P><PRE CLASS="PROGRAMLISTING" >ECPG = ecpg %.c: %.pgc $(ECPG) $<</PRE ><P> </P ><P > The complete syntax of the <TT CLASS="COMMAND" >ecpg</TT > command is detailed in <A HREF="app-ecpg.html" ><SPAN CLASS="APPLICATION" >ecpg</SPAN ></A >. </P ><P > The <SPAN CLASS="APPLICATION" >ecpg</SPAN > library is thread-safe by default. However, you might need to use some threading command-line options to compile your client code. </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="ecpg-preproc.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="ecpg-library.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Preprocessor Directives</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="ecpg.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Library Functions</TD ></TR ></TABLE ></DIV ></BODY ></HTML >