DECLARE STATEMENT
SQL - Language Statements
DECLARE STATEMENT
Declares a cursor
1998-04-15
DECLARE cursor [ BINARY ]
FOR SELECT query
1998-04-15
Inputs
BINARY
The BINARY keyword causes the cursor to fetch data in binary
rather than in ASCII format.
cursor
The cursor's name.
query
An SQL query which will provide the rows to be governed by the
cursor.
Refer to the SELECT statement for further information about
valid arguments.
1998-04-15
Outputs
SELECT
The message returned if the SELECT is run successfully.
NOTICE
BlankPortalAssignName: portal "cursor" already exists
This error occurs if cursor "cursor" is already declared.
1998-04-15
Description
DECLARE allows a user to create cursors, which can be used to retrieve
a small number of rows at a time out of a larger query. Cursors can return
data either in ASCII or in binary foramt.
Normal cursors return data in ASCII format. Since
data is stored natively in binary format, the system must
do a conversion to produce the ASCII format. In addition,
ASCII formats are often larger in size than binary format.
Once the information comes back in ASCII, the client
application often has to convert it to a binary format to
manipulate it anyway.
BINARY cursors give you back the data in the native binary
representation. So binary cursors will tend to be a
little faster since they suffer less conversion overhead.
For example, for an integer column, you get a C integer number like ^A
using a binary cursor, while you get a string value like '1'
using the non binary cursor.
However, ASCII is architecture-neutral whereas binary
representation can differ between different machine architectures.
Therefore, if your client machine and server machine use different
representations, you will probably not want your data returned in
binary format.
Again, if you intend to display the data in
ASCII, getting it back in ASCII will save you some
effort on the client side.
1998-04-15
Notes
Cursors are only available in transactions.
PostgreSQL does not have an explicit OPEN cursor
statement; a cursor is considered to be open when it is DECLAREd.
Usage
To declare a cursor:
DECLARE liahona CURSOR
FOR SELECT * FROM films;
Compatibility
1998-04-15
SQL92
SQL92 specifies some additional capabilities for the DECLARE statement:
DECLARE cursor [ INSENSITIVE ] [ SCROLL ] CURSOR
FOR SELECT expression
[ ORDER BY column [, ... ] [ ASC | DESC ]
[ FOR { READ ONLY | UPDATE [ OF column [, ...] ] } ]
INSENSITIVE
UPDATE and DELETE CURRENT operations are not allowed
if the cursor is declared to be INSENSITIVE.
SCROLL
If SCROLL is not specified, only FETCH NEXT will be allowed.
FOR READ ONLY/UPDATE
If READ ONLY is specified, UPDATE/DELETE CURRENT operations
will not be allowed.