SELECT
Produces a result set from a query on database tables.
Syntax
select-statement [ UNION [ALL] select-statement
] [...]where select-statement is:
SELECT [subset-clause] [duplicates-option] { * | select-list }
[ INTO variable [,...] ]
FROM table-list [,...]
[ WHERE condition ]
[ GROUP BY column-list [ HAVING condition ]]
[ ORDER BY column [{ASC|DESC}] [,...] ]where subset-clause is:
[ SKIP { integer | variable }]
[ {FIRST|MIDDLE|LIMIT} { integer | variable ]where duplicates-option
is:
{ ALL
| DISTINCT
| UNIQUE
}where select-list is:
{ [@]table-specification.*
| [table-specification.]column
| literal
} [ [AS] column-alias ]
[,...]where table-list
is:
{ table-name
| OUTER table-name
| OUTER ( table-name [,...] )
}
[,...]where table-name is:
table-specification [ [AS] table-alias]where table-specification is:
[dbname[@dbserver]:][owner.]tablewhere column-list is:
column-name [,...]where column-name is:
[table.]column- dbname identifies the database name.
- dbserver identifies the database server (INFORMIXSERVER).
- owner identifies the owner of the table, with optional double quotes.
- table is the name of the database table.
- table-alias defines a new name to reference the table in the rest of the statement.
- integer is an integer constant.
- variable is a program variable.
- column is a name of a table column.
- column-alias defines a new name to reference the column in the rest of the statement.
- condition is an SQL expression to select the rows to be deleted.
Usage
It is recommended to avoid using the dbname, dbserver and owner prefix of the table name to ensure maximum SQL portability.
If the
SELECT statement returns only
one row of data, you can write it directly as a procedural
instruction. However, you must use the INTO clause
to provide the list of variables where column values will
be fetched. The INTO clause provides the
list of fetch buffers. This clause is not part of the SQL
language sent to the database server; it is extracted from the statement
by the compiler.MAIN
DEFINE myrec RECORD
key INTEGER,
name CHAR(10),
cdate DATE,
comment VARCHAR(50)
END RECORD
DATABASE stock
LET myrec.key = 123
SELECT name, cdate
INTO myrec.name, myrec.cdate
FROM items
WHERE key=myrec.key
END MAINIf the SELECT statement
returns more than one row of data, you must declare
a database cursor to process the result set.
MAIN
DEFINE myrec RECORD
key INTEGER,
name CHAR(10),
cdate DATE,
comment VARCHAR(50)
END RECORD
DATABASE stock
LET myrec.key = 123
DECLARE c1 CURSOR FOR
SELECT name, cdate
FROM items
WHERE key=myrec.key
OPEN c1
FETCH c1 INTO myrec.name, myrec.cdate
CLOSE c1
END MAIN The SELECT statement
can include the INTO clause, but it is strongly
recommended that you use that clause in the FETCH instruction
only.
The SELECT INTO TEMP statement creates temporary tables. Such a statement does
not return a result set.