---
name: "MOVE"
section: "7"
platform: "linux"
package: "postgresql"
version: "18.6-4"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/MOVE"
---

# MOVE(7)

position a cursor

## NAME

MOVE - position a cursor

## SYNOPSIS

```
MOVE [ direction ] [ FROM | IN ] cursor_name
where direction can be one of:
    NEXT
    PRIOR
    FIRST
    LAST
    ABSOLUTE count
    RELATIVE count
    count
    ALL
    FORWARD
    FORWARD count
    FORWARD ALL
    BACKWARD
    BACKWARD count
    BACKWARD ALL
```

## DESCRIPTION

**MOVE** repositions a cursor without retrieving any data. **MOVE** works exactly like the **FETCH** command, except it only positions the cursor and does not return rows.

The parameters for the **MOVE** command are identical to those of the **FETCH** command; refer to [**FETCH**(7)](/FETCH/7.md) for details on syntax and usage.

## OUTPUTS

On successful completion, a **MOVE** command returns a command tag of the form

```
MOVE count
```

The *count* is the number of rows that a **FETCH** command with the same parameters would have returned (possibly zero).

## EXAMPLES

```
BEGIN WORK;
DECLARE liahona CURSOR FOR SELECT * FROM films;
-- Skip the first 5 rows:
MOVE FORWARD 5 IN liahona;
MOVE 5
-- Fetch the 6th row from the cursor liahona:
FETCH 1 FROM liahona;
 code  | title  | did | date_prod  |  kind  |  len
-------+--------+-----+------------+--------+-------
 P_303 | 48 Hrs | 103 | 1982-10-22 | Action | 01:37
(1 row)
-- Close the cursor liahona and end the transaction:
CLOSE liahona;
COMMIT WORK;
```

## COMPATIBILITY

There is no **MOVE** statement in the SQL standard.

## SEE ALSO

[**CLOSE**(7)](/CLOSE/7.md), [**DECLARE**(7)](/DECLARE/7.md), [**FETCH**(7)](/FETCH/7.md)
