<!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/move.sgml,v 1.14 2002/11/13 00:44:08 momjian Exp $
PostgreSQL documentation
-->

<refentry id="SQL-MOVE">
 <refmeta>
  <refentrytitle id="SQL-MOVE-TITLE">MOVE</refentrytitle>
  <refmiscinfo>SQL - Language Statements</refmiscinfo>
 </refmeta>
 <refnamediv>
  <refname>
   MOVE
  </refname>
  <refpurpose>
   position a cursor on a specified row of a table
  </refpurpose>
 </refnamediv>                
 <refsynopsisdiv>
  <refsynopsisdivinfo>
   <date>1999-07-20</date>
  </refsynopsisdivinfo>
  <synopsis>
MOVE [ <replaceable class="PARAMETER">direction</replaceable> ] 
    {<replaceable class="PARAMETER">count</replaceable> | LAST }
    { IN | FROM } <replaceable class="PARAMETER">cursor</replaceable>
  </synopsis>
 </refsynopsisdiv>

 <refsect1 id="R1-SQL-MOVE-1">
  <refsect1info>
   <date>1998-09-24</date>
  </refsect1info>
  <title>
   Description
  </title>
  <para>
   <command>MOVE</command> allows a user to move cursor position a specified
   number of rows.
   <command>MOVE</command> works like the <command>FETCH</command> command,
   but only positions the cursor and does not return rows.
   <replaceable class="PARAMETER">LAST</replaceable> moves to the end
   of the cursor.
  </para>
  <para>
   Refer to 
   <xref linkend="sql-fetch" endterm="sql-fetch-title">
   for details on syntax and usage.
  </para>

  <refsect2 id="R2-SQL-MOVE-3">
   <refsect2info>
    <date>1998-09-24</date>
   </refsect2info>
   <title>
    Notes
   </title>

   <para>
    <command>MOVE</command> is a <productname>PostgreSQL</productname>
    language extension.
   </para>

   <para>
    Refer to
    <xref linkend="sql-fetch" endterm="sql-fetch-title">
    for a description of valid arguments.
    Refer to 
    <xref linkend="sql-declare" endterm="sql-declare-title">
    to define a cursor.
    Refer to 
    <xref linkend="sql-begin" endterm="sql-begin-title">, 
    <xref linkend="sql-commit" endterm="sql-commit-title">,
    and
    <xref linkend="sql-rollback" endterm="sql-rollback-title">
    for further information about transactions.
   </para>
  </refsect2>
 </refsect1>

 <refsect1 id="R1-SQL-MOVE-2">
  <title>
   Usage
  </title>
  <para>
   Set up and use a cursor:

<programlisting>
BEGIN WORK;
DECLARE liahona CURSOR  FOR SELECT * FROM films;
-- Skip first 5 rows:
MOVE FORWARD 5 IN liahona;
<computeroutput>
MOVE
</computeroutput>
-- Fetch 6th row in the cursor liahona:
FETCH 1 IN liahona;
<computeroutput>
FETCH

 code  | title  | did | date_prod | kind   | len
-------+--------+-----+-----------+--------+-------
 P_303 | 48 Hrs | 103 | 1982-10-22| Action | 01:37
(1 row)
</computeroutput>
-- close the cursor liahona and commit work:
CLOSE liahona;
COMMIT WORK;
</programlisting>
  </para>
 </refsect1>

 <refsect1 id="R1-SQL-MOVE-3">
  <title>
   Compatibility
  </title>
	
  <refsect2 id="R2-SQL-MOVE-4">
   <refsect2info>
    <date>1998-09-01</date>
   </refsect2info>
   <title>
    SQL92
   </title>
   <para>
    There is no <acronym>SQL92</acronym> <command>MOVE</command> statement. 
    Instead, <acronym>SQL92</acronym> allows
    one to <command>FETCH</command> rows from an absolute cursor position,
    implicitly moving the cursor to the correct position.
   </para>
  </refsect2>
 </refsect1>
</refentry>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:nil
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"../reference.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:"/usr/lib/sgml/catalog"
sgml-local-ecat-files:nil
End:
-->
