fetch.sgml
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:10k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. <refentry id="SQL-FETCH">
  2.  <refmeta>
  3.   <refentrytitle>
  4.    FETCH
  5.   </refentrytitle>
  6.   <refmiscinfo>SQL - Language Statements</refmiscinfo>
  7.  </refmeta>
  8.  <refnamediv>
  9.   <refname>
  10.    FETCH
  11.   </refname>
  12.   <refpurpose>
  13.    Gets rows using a cursor
  14.   </refpurpose>
  15.  </refnamediv>
  16.  <refsynopsisdiv>
  17.   <refsynopsisdivinfo>
  18.    <date>1998-09-01</date>
  19.   </refsynopsisdivinfo>
  20.   <synopsis>
  21. FETCH [ <replaceable class="PARAMETER">selector</replaceable> ] [ <replaceable class="PARAMETER">count</replaceable> ] { IN | FROM } <replaceable class="PARAMETER">cursor</replaceable>
  22. FETCH [ RELATIVE ] [ { [ <replaceable class="PARAMETER">#</replaceable> | ALL | NEXT | PRIOR ] } ] FROM ] <replaceable class="PARAMETER">cursor</replaceable>
  23.   </synopsis>
  24.   <refsect2 id="R2-SQL-FETCH-1">
  25.    <refsect2info>
  26.     <date>1998-09-01</date>
  27.    </refsect2info>
  28.    <title>
  29.     Inputs
  30.    </title>
  31.    <para>
  32.     <variablelist>
  33.      <varlistentry>
  34.       <term><replaceable class="PARAMETER">selector</replaceable></term>
  35.       <listitem>
  36.        <para>
  37. <replaceable class="PARAMETER">selector</replaceable>
  38. defines the fetch direction. It can be one
  39. the following:
  40. <variablelist>
  41.  <varlistentry>
  42.   <term>FORWARD</term>
  43.   <listitem>
  44.    <para>
  45.     fetch next row(s). This is the default
  46.     if <replaceable class="PARAMETER">selector</replaceable> is omitted.
  47.    </para>
  48.   </listitem>
  49.  </varlistentry>
  50.  <varlistentry>
  51.   <term>BACKWARD</term>
  52.   <listitem>
  53.    <para>
  54.     fetch previous row(s).
  55.    </para>
  56.   </listitem>
  57.  </varlistentry>
  58.  <varlistentry>
  59.   <term>RELATIVE</term>
  60.   <listitem>
  61.    <para>
  62.     Noise word for SQL92 compatibility.
  63.    </para>
  64.   </listitem>
  65.  </varlistentry>
  66. </variablelist>
  67.        </para>
  68.       </listitem>
  69.      </varlistentry>
  70.      <varlistentry>
  71.       <term><replaceable class="PARAMETER">count</replaceable></term>
  72.       <listitem>
  73.        <para>
  74. <replaceable class="PARAMETER">count</replaceable>
  75. determines how many rows to fetch. It can be one of the following:
  76. <variablelist>
  77.  <varlistentry>
  78.   <term><replaceable class="PARAMETER">#</replaceable></term>
  79.   <listitem>
  80.    <para>
  81.     A signed integer that specify how many rows to fetch.
  82.     Note that a negative integer is equivalent to changing the sense of
  83.     FORWARD and BACKWARD.
  84.    </para>
  85.   </listitem>
  86.  </varlistentry>
  87.  <varlistentry>
  88.   <term>
  89.    ALL
  90.   </term>
  91.   <listitem>
  92.    <para>
  93.     Retrieve all remaining rows.
  94.    </para>
  95.   </listitem>
  96.  </varlistentry>
  97.  <varlistentry>
  98.   <term>
  99.    NEXT
  100.   </term>
  101.   <listitem>
  102.    <para>
  103.     Equivalent to specifying a count of <command>1</command>.
  104.    </para>
  105.   </listitem>
  106.  </varlistentry>
  107.  <varlistentry>
  108.   <term>
  109.    PRIOR
  110.   </term>
  111.   <listitem>
  112.    <para>
  113.     Equivalent to specifying a count of <command>-1</command>.
  114.    </para>
  115.   </listitem>
  116.  </varlistentry>
  117. </variablelist>
  118.        </para>
  119.       </listitem>
  120.      </varlistentry>
  121.      <varlistentry>
  122.       <term><replaceable class="PARAMETER">cursor</replaceable></term>
  123.       <listitem>
  124.        <para>
  125. An open cursor's name.
  126.        </para>
  127.       </listitem>
  128.      </varlistentry>
  129.     </variablelist>
  130.    </para>
  131.   </refsect2>
  132.   <refsect2 id="R2-SQL-FETCH-2">
  133.    <refsect2info>
  134.     <date>1998-04-15</date>
  135.    </refsect2info>
  136.    <title>
  137.     Outputs
  138.    </title>
  139.    <para>
  140.     <command>FETCH</command> returns the results of the query defined by the specified cursor.
  141.     The following messages will be returned if the query fails:
  142.     <variablelist>
  143.      <varlistentry>
  144.       <term><computeroutput>
  145. NOTICE:  PerformPortalFetch: portal "<replaceable class="PARAMETER">cursor</replaceable>" not found
  146.        </computeroutput></term>
  147.       <listitem>
  148.        <para>
  149. If <replaceable class="PARAMETER">cursor</replaceable>
  150. is not previously declared.
  151. The cursor must be declared within a transaction block.
  152.        </para>
  153.       </listitem>
  154.      </varlistentry>
  155.      <varlistentry>
  156.       <term><computeroutput>
  157. NOTICE:  FETCH/ABSOLUTE not supported, using RELATIVE
  158.        </computeroutput></term>
  159.       <listitem>
  160.        <para>
  161. <productname>Postgres</productname> does not support absolute
  162. positioning of cursors.
  163.        </para>
  164.       </listitem>
  165.      </varlistentry>
  166.      <varlistentry>
  167.       <term><computeroutput>
  168. ERROR:  FETCH/RELATIVE at current position is not supported
  169.        </computeroutput></term>
  170.       <listitem>
  171.        <para>
  172. <acronym>SQL92</acronym> allows one to repetatively retrieve the cursor
  173. at its "current position" using the syntax
  174. <synopsis>
  175. FETCH RELATIVE 0 FROM <replaceable class="PARAMETER">cursor</replaceable>
  176. </synopsis>
  177.        </para>
  178.        <para>
  179. <productname>Postgres</productname> does not currently support
  180. this notion; in fact the value zero is reserved to indicate that
  181. all rows should be retrieved and is equivalent to specifying the ALL keyword.
  182. If the RELATIVE keyword has been used, the <productname>Postgres</productname> 
  183. assumes that the user intended <acronym>SQL92</acronym> behavior
  184. and returns this error message.
  185.        </para>
  186.       </listitem>
  187.      </varlistentry>
  188.     </variablelist>
  189.    </para>
  190.   </refsect2>
  191.  </refsynopsisdiv>
  192.  <refsect1 id="R1-SQL-FETCH-1">
  193.   <refsect1info>
  194.    <date>1998-04-15</date>
  195.   </refsect1info>
  196.   <title>
  197.    Description
  198.   </title>
  199.   <para>
  200.    FETCH allows a user to retrieve rows using a cursor.
  201.    The number of rows retrieved is specified by
  202.    <replaceable class="PARAMETER">#</replaceable>.
  203.    If the number of rows remaining in the cursor is less
  204.    than <replaceable class="PARAMETER">#</replaceable>,
  205.    then only those available are fetched.
  206.    Substituting the keyword ALL in place of a number will
  207.    cause all remaining rows in the cursor to be retrieved.
  208.    Instances may be fetched in both FORWARD and BACKWARD
  209.    directions. The default direction is FORWARD.
  210.    <tip>
  211.     <para>
  212.      Negative numbers are now allowed to be specified for the
  213.      row count. A negative number is equivalent to reversing
  214.      the sense of the FORWARD and BACKWARD keywords. For example,
  215.      <command>FORWARD -1</command> is the same as <command>BACKWARD 1</command>.
  216.     </para>
  217.    </tip>
  218.   </para>
  219.   <para>
  220.    Note that the FORWARD and BACKWARD keywords are
  221.    <productname>Postgres</productname> extensions.
  222.    The <acronym>SQL92</acronym> syntax is also supported, specified
  223.    in the second form of the command. See below for details
  224.    on compatibility issues.
  225.   </para>
  226.   <para>
  227.    Once all rows are fetched, every other fetch access returns
  228.    no rows.
  229.   </para>
  230.   <para>
  231.    Updating data in a cursor is not supported by 
  232.    <productname>Postgres</productname>,
  233.    because mapping cursor updates back to base tables is
  234.    not generally possible, as is also the case with VIEW updates.
  235.    Consequently,
  236.    users must issue explicit UPDATE commands to replace data.
  237. </para>
  238.   <para>
  239.    Cursors may only be used inside of transactions because
  240.    the data that they store spans multiple user queries.
  241.   </para>
  242.   <refsect2 id="R2-SQL-FETCH-3">
  243.    <refsect2info>
  244.     <date>1998-04-15</date>
  245.    </refsect2info>
  246.    <title>
  247.     Notes
  248.    </title>
  249.    <para>
  250.     Use <command>MOVE</command> to change cursor position.
  251.     <command>DECLARE</command> will define a cursor.
  252.     Refer to <command>BEGIN</command>, <command>COMMIT</command>, and
  253.     <command>ROLLBACK</command>
  254.     for further information about transactions.
  255.    </para>
  256.   </refsect2>
  257.  </refsect1>
  258.  <refsect1 id="R1-SQL-FETCH-2">
  259.   <title>
  260.    Usage
  261.   </title>
  262.   <para>
  263.    <programlisting>
  264.    --set up and use a cursor:
  265.    --
  266.    BEGIN WORK;
  267.      DECLARE liahona CURSOR
  268.         FOR SELECT * FROM films;
  269.    --Fetch first 5 rows in the cursor liahona:
  270.    --
  271.      FETCH FORWARD 5 IN liahona;
  272.      code |title                  |did| date_prod|kind      |len
  273.      -----+-----------------------+---+----------+----------+------
  274.      BL101|The Third Man          |101|1949-12-23|Drama     | 01:44
  275.      BL102|The African Queen      |101|1951-08-11|Romantic  | 01:43
  276.      JL201|Une Femme est une Femme|102|1961-03-12|Romantic  | 01:25
  277.      P_301|Vertigo                |103|1958-11-14|Action    | 02:08
  278.      P_302|Becket                 |103|1964-02-03|Drama     | 02:28
  279.  
  280.    --Fetch previous row:
  281.    --
  282.      FETCH BACKWARD 1 IN liahona;
  283.      code |title                  |did| date_prod|kind      |len
  284.      -----+-----------------------+---+----------+----------+------
  285.      P_301|Vertigo                |103|1958-11-14|Action    | 02:08
  286.    -- close the cursor and commit work:
  287.    --
  288.      CLOSE liahona;
  289.    COMMIT WORK;
  290.    </programlisting>
  291.   </para>        
  292.  </refsect1>
  293.  <refsect1 id="R1-SQL-FETCH-3">
  294.   <title>
  295.    Compatibility
  296.   </title>
  297.   <para>
  298.    The non-embedded use of cursors is a <productname>Postgres</productname>
  299.    extension. The syntax and usage of cursors is being compared
  300.    against the embedded form of cursors defined in <acronym>SQL92</acronym>.
  301.   </para>
  302.   <refsect2 id="R2-SQL-FETCH-4">
  303.    <refsect2info>
  304.     <date>1998-09-01</date>
  305.    </refsect2info>
  306.    <title>
  307.     SQL92
  308.    </title>
  309.    <para>
  310.     <acronym>SQL92</acronym> allows absolute positioning of the cursor for
  311.     FETCH, and allows placing the results into explicit variables.
  312.     <synopsis>
  313. FETCH ABSOLUTE <replaceable class="PARAMETER">#</replaceable>
  314.     FROM <replaceable class="PARAMETER">cursor</replaceable>
  315.     INTO :<replaceable class="PARAMETER">variable</replaceable> [, ...]
  316.     </synopsis>
  317.     <variablelist>
  318.      <varlistentry>
  319.       <term>ABSOLUTE</term>
  320.       <listitem>
  321.        <para>
  322. The cursor should be positioned to the specified absolute
  323. row number. All row numbers in <productname>Postgres</productname>
  324. are relative numbers so this capability is not supported.
  325.        </para>
  326.       </listitem>
  327.      </varlistentry>
  328.      <varlistentry>
  329.       <term>:<replaceable class="PARAMETER">variable</replaceable></term>
  330.       <listitem>
  331.        <para>
  332. Target host variable(s).
  333.        </para>
  334.       </listitem>
  335.      </varlistentry>
  336.     </variablelist>
  337.    </para>
  338.   </refsect2>
  339.  </refsect1>
  340. </refentry>
  341. <!-- Keep this comment at the end of the file
  342. Local variables:
  343. mode: sgml
  344. sgml-omittag:nil
  345. sgml-shorttag:t
  346. sgml-minimize-attributes:nil
  347. sgml-always-quote-attributes:t
  348. sgml-indent-step:1
  349. sgml-indent-data:t
  350. sgml-parent-document:nil
  351. sgml-default-dtd-file:"../reference.ced"
  352. sgml-exposed-tags:nil
  353. sgml-local-catalogs:"/usr/lib/sgml/catalog"
  354. sgml-local-ecat-files:nil
  355. End:
  356. -->