Previous Page TOC Index Next Page



APPENDIX C SQL GRAMMAR


The following paragraphs list the recommended constructs to ensure interoperability in calls to SQLPrepare, SQLExecute, or SQLExecDirect. To the right of each construct is an indicator that tells whether the construct is part of the minimum grammar, the core grammar, or the extended grammar. ODBC does not prohibit the use of vendor-specific SQL grammar.

The Integrity Enhancement Facility (IEF) is included in the grammar but is optional. If drivers parse and execute SQL directly and wish to include referential integrity functionality, then we strongly recommend the SQL syntax used for this functionality conform to the grammar used here. The grammar for the IEF is taken directly from the X/Open and SQL Access Group SQL CAE specification (1992) and is a subset of the emerging ISO SQL-92 standard. Elements that are part of the IEF and are optional in the ANSI 1989 standard are presented in the following typeface and font, distinct from the rest of the grammar:

table-constraint-definition

A given driver and data source do not necessarily support all of the data types defined in this grammar. To determine which data types a driver supports, an application calls SQLGetInfo with the SQL_ODBC_SQL_CONFORMANCE flag. Drivers that support every core data type return 1 and drivers that support every core and every extended data type return 2. To determine whether a specific data type is supported, an application calls SQLGetTypeInfo with the fSqlType argument set to that data type.

If a driver supports data types that map to the ODBC SQL date, time, or timestamp data types, the driver must also support the extended SQL grammar for specifying date, time, or timestamp literals.


Note In CREATE TABLE and ALTER TABLE statements, applications must use the data type name returned by SQLGetTypeInfo in the TYPE_NAME column.

Parameter Data Types

Even though each parameter specified with SQLBindParameter is defined using an SQL data type, the parameters in an SQL statement have no intrinsic data type. Therefore, parameter markers can be included in an SQL statement only if their data types can be inferred from another operand in the statement. For example, in an arithmetic expression such as ? + COLUMN1, the data type of the parameter can be inferred from the data type of the named column represented by COLUMN1. An application cannot use a parameter marker if the data type cannot be determined.

The following table describes how a data type is determined for several types of parameters.

Location of Parameter

Assumed Data Type

One operand of a binary arithmetic or comparison operator

Same as the other operand

The first operand in a BETWEEN clause

Same as the other operand

The second or third operand in a BETWEEN clause

Same as the first operand

An expression used with IN

Same as the first value or the result column of the subquery

A value used with IN

Same as the expression

A pattern value used with LIKE

VARCHAR

An update value used with UPDATE

Same as the update column

Parameter Markers

An application cannot place parameter markers in the following locations:

For more information, see the ANSI SQL-92 specification.

If an application includes parameter markers in the SQL statement, the application must call SQLBindParameter to associate storage locations with parameter markers before it calls SQLExecute or SQLExecDirect. If the application calls SQLPrepare, the application can call SQLBindParameter before or after it calls SQLPrepare.

The application can set parameter markers in any order. The driver buffers argument descriptors and sends the current values referenced by the SQLBindParameter argument rgbValue for the associated parameter marker when the application calls SQLExecute or SQLExecDirect. It is the application’s responsibility to ensure that all pointer arguments are valid at execution time.


Note The keyword USER in the following tables represents a character string containing the user-name of the current user.

SQL Statements

The following SQL statements define the base ODBC SQL grammar.

Statement

Mini-
mum

Core

Exten-
ded

SOLID
Server

alter-table-statement ::=
ALTER TABLE base-table-name
{ ADD column-identifier data-type |
ADD (column-identifier data-type
[, column-identifier data-type]... ) }

Important As a data-type in an alter-table-statement, applications must use a data type from the TYPE_NAME column of the result set returned by SQLGetTypeInfo.



alter-table-statement ::=
ALTER TABLE base-table-name
{ ADD column-identifier data-type |
ADD (column-identifier data-type
[, column-identifier data-type]... ) |
DROP [COLUMN] column-identifier
[CASCADE | RESTRICT] }

Important As a data-type in an alter-table-statement, applications must use a data type from the TYPE_NAME column of the result set returned by SQLGetTypeInfo.



Note Keywords CASCADE and RESTRICT are not supported in the SQL grammar of SOLID Server.

create-index-statement ::=
CREATE [UNIQUE] INDEX index-name
ON base-table-name
( column-identifier [ASC | DESC]
[, column-identifier [ASC | DESC] ]... )



create-table-statement ::=
CREATE TABLE base-table-name
( column-element [, column-element] ...)

column-element ::= column-definition |
table-constraint-definition

column-definition ::=
column-identifier data-type
[DEFAULT default-value]
[column-constraint-definition
[column-constraint-definition]... ]

default-value::= literal | NULL | USER

column-constraint-definition ::=
NOT NULL | UNIQUE |
PRIMARY KEY |
REFERENCES ref-table-name
referenced-columns |
CHECK (search-condition)

table-constraint-definition ::=
UNIQUE (column-identifier
[, column-identifier]... ) |
PRIMARY KEY (column-identifier
[, column-identifier]... ) |
CHECK (search-condition) |
FORIEGN-KEY referencing-columns
REFERENCES ref-table-name
referenced-columns

Important As a data-type in a create-table-statement, applications must use a data type from the TYPE_NAME column of the result set returned by SQLGetTypeInfo.



Note Keyword DEFAULT not is supported in column-definitions in the SQL grammar of SOLID Server.

create-view-statement ::=
CREATE VIEW viewed-table-name
[( column-identifier
[, column-identifier]... ) ]
AS query-specification



delete-statement-positioned ::=
DELETE FROM table-name
WHERE CURRENT OF cursor-name



ODBC 1.0


ODBC 2.0

delete-statement-searched ::=
DELETE FROM table-name
[WHERE search-condition]



drop-index-statement ::=
DROP INDEX index-name



drop-table-statement ::=
DROP TABLE base-table-name
[CASCADE | RESTRICT]



Note. Keywords CASCADE and RESTRICT not supported in SOLID Server. Tables are dropped always with RESTRICT option.

drop-view-statement ::=
DROP VIEW viewer-table-name
[CASCADE | RESTRICT]



Note. Keywords CASCADE and RESTRICT are not supported in the SQL grammar of SOLID Server.

grant-statement ::=
GRANT {ALL | grant-privilege]... }
ON table-name
TO {PUBLIC |
user-name [, user-name] ...}

grant-privilege ::=
DELETE | INSERT | SELECT |
UPDATE [(column-identifier
[, column-identifier]...)] |
REFERENCES [(column-identifier
[, column-identifier]...)]



insert-statement ::=
INSERT INTO table-name
[( column-identifier
[, column-identifier]... ) ]
VALUES ( insert-value [, insert-value ]...)



insert-statement ::=
INSERT INTO table-name
[( column-identifier
[, column-identifier]... ) ]
{ query-specification |
VALUES (insert-value
[, insert-value ]...)}



ODBC-procedure-extension ::=
ODBC-std-esc-initiator [?=]
call procedure
ODBC-std-esc-terminator |
ODBC-ext-esc-initiator [?=]
call procedure
ODBC-ext-esc-terminator



revoke-statement ::=
REVOKE { ALL |
revoke-privilege
[, revoke-privilege]... }
ON table-name
FROM {PUBLIC |
user-name [, user-name]... }
[CASCADE | RESTRICT ]

revoke-privilege :: =
DELETE | INSERT | SELECT |
UPDATE | REFERENCES



Note. Keywords CASCADE and RESTRICT are not supported in the SQL grammar of SOLID Server.

select-statement ::=
SELECT [ALL | DISTINCT] select-list
FROM table-reference-list
[WHERE search-condition]
[order-by-clause]



select-statement ::=
SELECT [ALL | DISTINCT] select-list
FROM table-reference-list
[WHERE search-condition]
[GROUP BY column-name
[, column-name]...]
[HAVING search-condition]
[order-by-clause]



select-statement ::=
SELECT [ALL | DISTINCT] select-list
FROM table-reference-list
[WHERE search-condition]
[GROUP BY column-name
[, column-name]...]
[HAVING search-condition]
[UNION [ALL] select-statement]...
[order-by-clause]

(In ODBC 1.0, the UNION caluse was in the Core SQL grammar and did not support the ALL keyword.)



select-for-update-statement ::=
SELECT [ALL | DISTINCT ] select-list
FROM table-reference-list
[WHERE search-condition]
FOR UPDATE OF [ column-name
[, column-name]... ]



ODBC 1.0


ODBC 2.0

statement ::= create-table-statement |
delete-statement-searched |
drop-table-statement | insert-stetement |
select-statement |
update-statement-searched



statement ::= alter-table-statement |
create-index-statement |
create-table-statement |
create-view-statement |
delete-statement-searched |
drop-index-statement |
drop-table-statement |
drop-view-stetement |
grant-statement | insert-stetement |
revoke-statement | select-statement |
update-statement-searched



statement ::= alter-table-statement |
create-index-statement |
create-table-statement |
create-view-statement |
delete-statement-positioned |
delete-statement-searched |
drop-index-statement |
drop-table-statement |
drop-view-stetement |
grant-statement | insert-stetement |
ODBC-procedure-statement |
revoke-statement | select-statement |
select-for-update-statement |
statement-list |
update-stetement-positioned |
update-statement-searched

(In ODBC 1.0, select-for-update-statement, update-statement-positioned, and delete-statement-positioned were in the Core SQL grammar.)



statement-list ::= statement |
statement; statement-list




update-statement-positioned ::=
UPDATE table-name
SET column-identifier = {expression |
NULL}
[, column-identifier = {expression |
NULL}]...
WHERE CURRENT OF cursor-name



ODBC 1.0


ODBC 2.0

update-statement-searched ::=
UPDATE table-name
SET column-identifier = {expression |
NULL}
[, column-identifier = {expression |
NULL}]...
[WHERE search-condition]



Elements Used in SQL Statements

The following elements are used in the SQL statements listed previously.

Element

Mini-
mum

Core

Exten-
ded

SOLID
Server

all-function ::= {AVG | MAX | MIN |
SUM} (expression)



approximate-numeric-literal ::=
mantissaEexponent



approximate-numeric-type ::=
{approximate numeric types}

(For example, FLOAT, DOUBLE PRECISION, or REAL. To determine the type name used by a data source, an application calls SQLGetTypeInfo.)



argument-list ::= expression |
expression, argument-list



base-table-identifier ::= user-defined-name



base-table-name ::= base-table-identifier



base-table-name ::= base-table-identifier |
owner-name.base-table-identifier |
qualifier-name qualifier-separator
base-table-identifier |
qualifier-name qualifier-separator
[owner-name].base-table-identifier

(The third syntax is valid only if the data source does not support owners.)



between-predicate ::=
expression [NOT] BETWEEN expression AND expression



binary-literal ::=
{implementation defined}




binary-type ::= {binary types}

(For example, BINARY, VARBINARY, or LONG VARBINARY. To determine the type name used by a data source, an application calls SQLGetTypeInfo.)



bit-literal ::= 0 | 1




bit-type ::= {bit types}

(For example, BIT. To determine the type name used by a data source, an application calls SQLGetTypeInfo.)




boolean-factor ::= [NOT] boolean-primary



boolean-primary ::= predicate | ( search-condition )



boolean-term ::= boolean-factor
[AND boolean-term]



character ::= {any character in the implementor’s character set}



character-string-literal :: = '{character}...'

(To include a single literal quote character (') in a character-string-literal, use two literal quote characters (' ').)



character-string-type ::= {character types}

(The Minimum SQL conformance level requires at least one character data type. For example, CHAR, VARCHAR, or LONG VARCHAR. To determine the type name used by a data source, an application calls SQLGetTypeInfo.)



column-alias ::= user-defined-name



column-identifier ::= user-defined-name



column-name ::=
[table-name.]column-identifier



column-name ::= [{table-name |
correlation-name}.]column-identifier



comparison-operator ::= < | > | <= |
>= | = | <>



comparison-predicate ::= expression
comparison-operator expression



comparison-predicate ::=
expression comparison-operator
{expression | (sub-query)}



correlation-name ::= user-defined-name



cursor-name ::= user-defined-name



data-type ::= character-string-type




data-type ::=
character-string-type |
exact-numeric-type |
approximate-numeric-type




data-type ::=
character-string-type |
exact-numeric-type |
approximate-numeric-type | bit-type |
binary-type | date-type | time-type |
timestamp-type



date-separator ::= -



date-type ::= {date types}

(For example, DATE. To determine the type name used by a data source, an application calls SQLGetTypeInfo.)



date-value ::= years-value date-separator
months-value date-separator days-value



days-value ::= digit digit



digit ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9



distinct-function ::=
{AVG | COUNT | MAX | MIN | SUM} (DISTINCT column-name)



dynamic-parameter ::= ?



empty-string ::=



escape-character ::= character



exact-numeric-literal ::= [+|]
{unsigned-integer[.unsigned-integer] |
unsigned-integer. | .unsigned-integer }



exact-numeric-type ::=
{exact numeric types}

(For example, DECIMAL, NUMERIC, SMALLINT, or INTEGER. To determine the type name used by a data source, an application calls SQLGetTypeInfo.)



exact-numeric-type ::=
{exact numeric types}

(For example, DECIMAL, NUMERIC, SMALLINT, INTEGER, and BIGINT. To determine the type name used by a data source, an application calls SQLGetTypeInfo.)




exists-predicate ::= EXISTS ( sub-query )



exponent ::= [+|] unsigned-integer



expression ::= term | expression {+|} term



factor ::= [+|]primary



hours-value ::= digit digit



index-identifier ::= user-defined-name



index-name ::=
[index-qualifier.]index-identifier



index-qualifier ::= user-defined-name



in-predicate ::= expression [NOT] IN
{(value {, value}...) | (sub-query)}



insert-value ::= dynamic-parameter | literal |
NULL | USER



keyword ::= (see list of reserved keywords)



length ::= unsigned-integer



letter ::= lower-case-letter | upper-case-letter



like-predicate ::= expression [NOT] LIKE
pattern-value



like-predicate ::= expression [NOT] LIKE
pattern-value [ODBC-like-escape-clause]



literal ::= character-string-literal



literal ::= character-string-literal |
numeric-literal



literal ::= character-string-literal |
numeric-literal | bit-literal | binary-literal |
ODBC-date-time-extension



lower-case-letter ::= a | b | c | d | e | f | g |
h | i | j | k | l | m | n | o | p | q | r | s |
t | u | v | w | x | y | z



mantissa ::= exact-numeric-literal



minutes-value ::= digit digit



months-value ::= digit digit



null-predicate ::= column-name IS [NOT]
NULL



numeric-literal ::= exact-numeric-literal |
approximate-numeric-literal



ODBC-date-literal ::=
ODBC-std-esc-initiator d 'date-value'
ODBC-std-esc-terminator |
ODBC-ext-esc-initiator d 'date-value'
ODBC-ext-esc-terminator



ODBC-date-time-extension ::=
ODBC-date-literal | ODBC-time-literal |
ODBC-timestamp-literal



ODBC-like-escape-clause ::=
ODBC-std-esc-initiator
escape 'escape-character'
ODBC-std-esc-terminator |
ODBC-ext-esc-initiator
escape 'escape-character'
DBC-ext-esc-terminator



ODBC-time-literal ::=
ODBC-std-esc-initiator
t 'time-value' ODBC-std-esc-terminator |
ODBC-ext-esc-initiator
t 'time-value' ODBC-ext-esc-terminator



ODBC-timestamp-literal ::=
ODBC-std-esc-initiator ts 'timestamp-value'
ODBC-std-esc-terminator |
ODBC-ext-esc-initiator ts 'timestamp-value'
ODBC-ext-esc-terminator



ODBC-ext-esc-initiator ::= {



ODBC-ext-esc-terminator ::= }



ODBC-outer-join-extension ::=
ODBC-std-esc-initiator oj outer-join
ODBC-std-esc-terminator |
ODBC-ext-esc-initiator oj outer-join
ODBC-ext-esc-terminator



ODBC-scalar-function-extension ::=
ODBC-std-esc-initiator fn scalar-function
ODBC-std-esc-terminator |
ODBC-ext-esc-initiator fn scalar-function
ODBC-ext-esc-terminator



ODBC-std-esc-initiator ::=
ODBC-std-esc-prefix SQL-esc-vendor-clause



ODBC-std-esc-prefix ::= --(*



ODBC-std-esc-terminator ::= *)--



order-by-clause ::= ORDER BY
sort-specification [, sort-specification]...



outer-join ::= table-name [correlation-name]
LEFT OUTER JOIN
{table-name [correlation-name] |
outer-join}
ON search-condition

(For outer joins, search-condition must contain only the join condition between the specified table-names.)



owner-name ::= user-defined-name



pattern-value ::= character-string-literal |
dynamic-parameter

(In a character-string-literal, the percent character (%) matches 0 or
more of any character; the underscore character (_) matches 1
character.)




pattern-value ::= character-string-literal |
dynamic-parameter | USER

(In a character-string-literal, the percent character (%) matches 0 or
more of any character; the underscore character (_) matches 1
character.)



precision ::= unsigned-integer



predicate ::= comparison-predicate | like-predicate | null-predicate




predicate ::= between-predicate |
comparison-predicate | exists-predicate |
in-predicate | like-predicate |
null-predicate | quantified-predicate



primary ::= column-name |
dynamic-parameter | literal | ( expression )




primary ::= column-name |
dynamic-parameter | literal |
set-function-reference | USER |
( expression )



primary ::= column-name |
dynamic-parameter | literal |
ODBC-scalar-function-extension |
set-function-reference | USER |
( expression )



procedure ::= procedure-name |
procedure-name (procedure-parameter-list)



procedure-identifier ::= user-defined-name



procedure-name ::= procedure-identifier |
owner-name.procedure-identifier |
qualifier-name qualifier-separator
procedure-identifier |
qualifier-name qualifier-separator
[owner-name].procedure-identifier

(The third syntax is valid only if the data source does not support owners.)



procedure-parameter-list ::=
procedure-parameter |
procedure-parameter,
procedure-parameter-list



procedure-parameter ::= dynamic-parameter |
literal | empty-string

(If a procedure parameter is an empty string, the procedure uses the default value for that parameter.)



qualifier-name ::= user-defined-name




qualifier-separator ::=
{implementation-defined}

(The qualifier separator is returned through SQLGetInfo with the SQL_QUALIFIER_NAME_SEPARATOR option.)




quantified-predicate ::=
expression comparison-operator
{ALL | ANY} (sub-query)



query-specification ::=
SELECT [ALL | DISTINCT] select-list
FROM table-reference-list
[WHERE search-condition]
[GROUP BY
column-name, [column-name]...]
[HAVING search-condition]



ref-table-name ::= base-table-identifier



ref-table-name ::= base-table-identifier |
owner-name.base-table-identifier |
qualifier-name qualifier-separator
base-table-identifier |
qualifier-name qualifier-separator
[owner-name].base-table-identifier

(The third syntax is valid only if the data source does not support owners.)



referenced-columns ::=
( column-identifier [, column-identifier]... )



referencing-columns ::=
(column-identifier [, column-identifier]... )



scalar-function ::=
function-name (argument-list)

(The definitions for the non-terminals function-name and function-name (argument-list) are derived from the list of scalar functions in Appendix F, "Scalar Functions.")



scale ::= unsigned-integer



search-condition ::=
boolean-term [OR search-condition]



seconds-fraction ::= unsigned-integer



seconds-value ::= digit digit



select-list ::=
* | select-sublist [, select-sublist]...



select-sublist ::= expression



select-sublist ::=
expression [[AS] column-alias] |
{table-name | correlation-name}.*



set-function-reference ::= COUNT(*) |
distinct-function | all-function



sort-specification ::=
{unsigned-integer | column-name }
[ASC | DESC]



SQL-esc-vendor-clause ::= VENDOR(Microsoft), PRODUCT(ODBC)



sub-query ::=
SELECT [ALL | DISTINCT] select-list
FROM table-reference-list
[WHERE search-condition]
[GROUP BY
column-name [, column-name]...]
[HAVING search-condition]



table-identifier ::= user-defined-name



table-name ::= table-identifier



table-name ::= table-identifier |
owner-name.table-identifier |
qualifier-name qualifier-separator
table-identifier |
qualifier-name qualifier-separator
[owner-name].table-identifier

(The third syntax is valid only if the data source does not support owners.)



table-reference ::= table-name




table-reference ::=
table-name [correlation-name]




table-reference::=
table-name [correlation-name] |
ODBC-outer-join-extension

(A SELECT statement can contain only one table-reference that is an ODBC-outer-join-extension.)



table-reference-list ::=
table-reference [,table-reference]



term ::= factor | term {*|/} factor



time-separator ::= :



time-type ::= {time types}

(For example, TIME. To determine the type name used by a data source, an application calls SQLGetTypeInfo.)



time-value ::=
hours-value time-separator
minutes-value time-separator
seconds-value



timestamp-separator ::=
(The blank character.)



timestamp-type ::= {timestamp types}

(For example, TIMESTAMP. To determine the type name used by a data source, an application calls SQLGetTypeInfo.)



timestamp-value ::=
date-value timestamp-separator
time-value[.seconds-fraction]



unsigned-integer ::= {digit}...



upper-case-letter ::= A | B | C | D | E | F |
G | H | I | J | K | L | M | N | O | P |
Q | R | S | T | U | V | W | X | Y | Z



user-defined-name ::=
letter[ digit | letter| _ ]...



user-name ::= user-defined-name



value ::= literal | USER | dynamic-parameter



viewed-table-identifier ::= user-defined-name



viewed-table-name ::=
viewed-table-identifier |
owner-name.viewed-table-identifier |
qualifier-name qualifier-separator
viewed-table-identifier |
qualifier-name qualifier-separator
[owner-name].viewed-table-identifier

(The third syntax is valid only if the data source does not support owners.)



years-value ::= digit digit digit digit



List of Reserved Keywords

The following words are reserved for use in ODBC function calls. These words do not constrain the minimum SQL grammar; however, to ensure compatibility with drivers that support the core SQL grammar, applications should avoid using any of these keywords. The #define value SQL_ODBC_KEYWORDS contains a comma-separated list of these keywords.


For a complete list of reserved keywords in several SQL standards and SOLID SQL API see Appendix F Reserved Words of SOLID Server Administrator's Guide.

ABSOLUTE

ADA

ADD

ALL

ALLOCATE

ALTER

AND

ANY

ARE

AS

ASC

ASSERTION

AT

AUTHORIZATION

AVG

BEGIN

BETWEEN

BIT

BIT_LENGTH

BY

CASCADE

CASCADED

CASE

CAST

CATALOG

CHAR

CHAR_LENGTH

CHARACTER

CHARACTER_LENGTH

CHECK

CLOSE

COALESCE

COBOL

COLLATE

COLLATION

COLUMN

COMMIT

CONNECT

CONNECTION

CONSTRAINT

CONSTRAINTS

CONTINUE

CONVERT

CORRESPONDING

COUNT

CREATE

CURRENT

CURRENT_DATE

CURRENT_TIME

CURRENT_TIMESTAMP

CURSOR

DATE

DAY

DEALLOCATE

DEC

DECIMAL

DECLARE

DEFERRABLE

DEFERRED

DELETE

DESC

DESCRIBE

DESCRIPTOR

DIAGNOSTICS

DICTIONARY

DISCONNECT

DISPLACEMENT

DISTINCT

DOMAIN

DOUBLE

DROP

ELSE

END

END-EXEC

ESCAPE

EXCEPT

EXCEPTION

EXEC

EXECUTE

EXISTS

EXTERNAL

EXTRACT

FALSE

FETCH

FIRST

FLOAT

FOR

FOREIGN

FORTRAN

FOUND

FROM

FULL

GET

GLOBAL

GO

GOTO

GRANT

GROUP

HAVING

HOUR

IDENTITY

IGNORE

IMMEDIATE

IN

INCLUDE

INDEX

INDICATOR

INITIALLY

INNER

INPUT

INSENSITIVE

INSERT

INTEGER

INTERSECT

INTERVAL

INTO

IS

ISOLATION

JOIN

KEY

LANGUAGE

LAST

LEFT

LEVEL

LIKE

LOCAL

LOWER

MATCH

MAX

MIN

MINUTE

MODULE

MONTH

MUMPS

NAMES

NATIONAL

NCHAR

NEXT

NONE

NOT

NULL

NULLIF

NUMERIC

OCTET_LENGTH

OF

OFF

ON

ONLY

OPEN

OPTION

OR

ORDER

OUTER

OUTPUT

OVERLAPS

PARTIAL

PASCAL

PLI

POSITION

PRECISION

PREPARE

PRESERVE

PRIMARY

PRIOR

PRIVILEGES

PROCEDURE

PUBLIC

RESTRICT

REVOKE

RIGHT

ROLLBACK

ROWS

SCHEMA

SCROLL

SECOND

SECTION

SELECT

SEQUENCE

SET

SIZE

SMALLINT

SOME

SQL

SQLCA

SQLCODE

SQLERROR

SQLSTATE

SQLWARNING

SUBSTRING

SUM

SYSTEM

TABLE

TEMPORARY

THEN

TIME

TIMESTAMP

TIMEZONE_HOUR

TIMEZONE_MINUTE

TO

TRANSACTION

TRANSLATE

TRANSLATION

TRUE

UNION

UNIQUE

UNKNOWN

UPDATE

UPPER

USAGE

USER

USING

VALUE

VALUES

VARCHAR

VARYING

VIEW

WHEN

WHENEVER

WHERE

WITH

WORK

YEAR

Previous Page TOC Index Next Page

Copyright © 1992-1997 Solid Information Technology Ltd All rights reserved.