Syntax documentation Syntax List

This documentation uses the BNF syntax notation with the following conventions:

 

Explanation

KEYWORDS

Keywords are shown in uppercase letters for the sake of clarity. They can be entered in uppercase or lowercase letters.

<xyz>

Terms in angle brackets are placeholders for syntactical units explained in this document. Do not use angle brackets when entering an SQL statement.

clause ::= rule

Clauses are the building blocks of SQL statements. Rules describe how these building blocks are put together to form more complex clauses and also dictate the notation that is used.

clause1 clause2

The two clauses are written one after the other, separated by at least one blank.

[clause]

Optional clause. This clause can be ignored. Do not use square brackets when entering an SQL statement.

Clause1 | clause2 | ... | clausen

Alternative clauses. You can use exactly one of these clauses.

Clause,...

The clause can be repeated as often as required. The individual repetitions must be written one after the other and separated by a comma and any number of blanks.

Clause...

The clause can be repeated as often as required. The individual repetitions must be written directly one after the other without a separating comma or blank.

The syntax rules are specified in the following form:

Clause ::=
  Rule

If you want an explanation of the syntax rules, you can use the clause link to go to the relevant part of the Reference Manual. As a result, you exit the syntax list itself.

A

<Structure linkadd_definition> ::=
  
ADD <column_definition>,...
| ADD (<column_definition>,...)
| ADD <constraint_definition>
| ADD <referential_constraint_definition>
| ADD <key_definition>

<Structure linkalias_name> ::=
  
<identifier>

<Structure linkall_function> ::=
  <set_function_name> ( [ALL] <expression> )

<Structure linkalter_definition> ::=
  ALTER CONSTRAINT <constraint_name> CHECK <search_condition>
| ALTER <key_definition>

<Structure linkalter_index_statement> ::=
  
ALTER INDEX <index_name> [ON <table_name>] ENABLE
| ALTER INDEX <index_name> [ON <table_name>] DISABLE
| ALTER INDEX <index_name> [ON <table_name>] INIT USAGE

<Structure linkalter_password_statement>::=
  
ALTER PASSWORD <old_password> TO <new_password>
| ALTER PASSWORD <user_name> <new_password>

<Structure linkalter_table_statement> ::=
  
ALTER TABLE <table_name> <add_definition>
| ALTER TABLE <table_name> <drop_definition>
| ALTER TABLE <table_name> <alter_definition>
| ALTER TABLE <table_name> <column_change_definition>
| ALTER TABLE <table_name> <modify_definition>
| ALTER TABLE <table_name> <referential_constraint_definition>
| ALTER TABLE <table_name> DROP FOREIGN KEY <referential_constraint_name>
| ALTER TABLE <table_name> <sample_definition>

<Structure linkalter_user_statement> ::=
  
ALTER USER <user_name> [<user_mode>]
    [TIMEOUT <unsigned_integer> | TIMEOUT NULL]
    [COSTWARNING <unsigned_integer> | COSTWARNING NULL]
    [COSTLIMIT <unsigned_integer> | COSTLIMIT NULL]
    [DEFAULT ROLE ALL [EXCEPT <role_name>] | DEFAULT ROLE NONE
    | DEFAULT ROLE <role_name> [IDENTIFIED BY <password>]]
    [[NOT] EXCLUSIVE]
    [DEFAULTCODE <ASCII | EBCDIC | UNICODE>]

<Structure linkalter_usergroup_statement> ::=
  
ALTER USERGROUP <usergroup_name> [<usergroup_mode>]
    [TIMEOUT <unsigned_integer> | TIMEOUT NULL]
    [COSTWARNING <unsigned_integer> | COSTWARNING NULL]
    [COSTLIMIT <unsigned_integer> | COSTLIMIT NULL]
    [DEFAULT ROLE ALL [EXCEPT <role_name>] | DEFAULT ROLE NONE
    | DEFAULT ROLE <role_name> [IDENTIFIED BY <password>]]
    [[NOT] EXCLUSIVE]
    [DEFAULTCODE <ASCII | EBCDIC | UNICODE>]

<Structure linkargument> ::=
  <identifier>

<Structure linkarithmetic_function> ::=
  
TRUNC ( <expression>[, <expression>] )
| ROUND ( <expression>[, <expression>] )
| NOROUND ( <expression> )
| FIXED ( <expression>[, <unsigned_integer> [, <unsigned_integer] ] )
| FLOAT ( <expression>[, <unsigned_integer> ] )
| CEIL ( <expression> )
| FLOOR ( <expression> )
| SIGN ( <expression> )
| ABS ( <expression> )
| POWER ( <expression>, <expression> )
| EXP ( <expression> )
| SQRT ( <expression> )
| LN ( <expression> )
| LOG ( <expression>, <expression> )
| PI
| LENGTH ( <expression> )
| INDEX ( <string_spec>, <string_spec> [,<expression>[, <expression>] ] )

<Structure linkassignment_statement> ::=
  SET <variable_name> = <expression>

B

<Structure linkbetween_predicate> ::=
  
<expression> [NOT] BETWEEN <expression> AND <expression>

<Structure linkbool_predicate> ::=
  
<column_spec> [ IS [NOT] <TRUE | FALSE>]

<Structure linkboolean_factor> ::=
  
[NOT] <predicate>
| [NOT] (<search_condition>)

<Structure linkboolean_term> ::=
  
<boolean_factor>
| <boolean_term> AND <boolean_factor>

C

<Structure linkcall_statement> ::=
  
CALL <dbproc_name> [(<expression>,...)] [WITH COMMIT]

<Structure linkcascade_option> ::=
  CASCADE
| RESTRICT

<Structure linkcase_else_clause> ::=
  
ELSE <statement>

<Structure linkcase_function> ::=
  
<simple_case_function>
| <searched_case_function>

<Structure linkcase_statement> ::=
  
<simple_case_statement>
| <searched_case_statement>

<Structure linkcharacter> ::=
  
<digit>
| <letter>
| <extended_letter>
| <hex_digit>
| <language_specific_character>
| <special_character>

<Structure linkclose_statement> ::=
  
CLOSE [<result_table_name>]

<Structure linkcolumn_attributes> ::=
  
[<key_or_not_null_spec>] [<default_spec>] [UNIQUE] [<constraint_definition>]
    [REFERENCES <referenced_table> [(<referenced_column>)] [<delete_rule>]]

<Structure linkcolumn_change_definition> ::=
  
COLUMN <column_name> NOT NULL
| COLUMN <column_name> DEFAULT NULL
| COLUMN <column_name> ADD <default_spec>
| COLUMN <column_name> ALTER <default_spec>
| COLUMN <column_name> DROP DEFAULT

<Structure linkcolumn_definition> ::=
  
<column_name> <data_type> [<column_attributes>]
| <column_name> <domain_name> [<column_attributes>]

<Structure linkcolumn_list> ::=
  
<column_name>
| <column_list>, <column_name>

<Structure linkcolumn_name> ::=
  
<identifier>

<Structure linkcolumn_spec> ::=
  
<column_name>
| <table_name>.<column_name>
| <reference_name>.<column_name>
| <result_table_name>.<column_name>

<Structure linkcomment> ::=
  
<string_literal>
| <parameter_name>

<Structure linkcomment_on_statement> ::=
  
COMMENT ON <object_spec> IS <comment>

<Structure linkcommit_statement> ::=
  
COMMIT [WORK]

<Structure linkcomp_op> ::=
  <
| >
| <>
| !=
| =
| <=
| >=
| = | < | >
(for machines with EBCDIC Code)
| ~= | ~< | ~>
(for machines with ASCII Code)

<Structure linkcomparison_predicate> ::=
  
<expression> <comp_op> <expression>
| <expression> <comp_op> <subquery>
| <expression_list> <equal_or_not> (<expression_list>)
| <expression_list> <equal_or_not> <subquery>

<Structure linkconnect_option> ::=
  
SQLMODE <INTERNAL | ANSI | DB2 | ORACLE>
| ISOLATION LEVEL <unsigned_integer>
| TIMEOUT <unsigned_integer>

<Structure linkconnect_statement> ::=
  
CONNECT <parameter_name> IDENTIFIED BY <parameter_name> [<connect_option>...]
| CONNECT <parameter_name> IDENTIFIED BY <password> [<connect_option>...]
| CONNECT <user_name> IDENTIFIED BY <parameter_name> [<connect_option>...]
| CONNECT <user_name> IDENTIFIED BY <password> [<connect_option>...]

<Structure linkconstraint_definition> ::=
  
CHECK <search_condition>
| CONSTRAINT <search_condition>
| CONSTRAINT <constraint_name> CHECK <search_condition>

<Structure linkconstraint_name> ::=
  
<identifier>

<Structure linkconversion_function> ::=
  
NUM (<expression>)
| CHR (<expression>[,<unsigned_integer>])
| HEX (<expression>)
| HEXTORAW (<expression>)
| CHAR (<expression>[,<datetimeformat>])

<Structure linkcreate_dbproc_statement> ::=
  
CREATE DBPROC <procedure_name> [(<formal_parameter>,..)] [RETURNS CURSOR] AS <routine>

<Structure linkcreate_domain_statement> ::=
  CREATE DOMAIN <domain_name> <data_type> [<default_spec>] [<constraint_definition>]

<Structure linkcreate_index_statement> ::=
  
CREATE [UNIQUE] INDEX <index_name> ON <table_name> (<column_name> [ASC | DESC],...)

<Structure linkcreate_role_statement> ::=
  
CREATE ROLE <role_name> [IDENTIFIED BY <password>]

<Structure linkcreate_sequence_statement> ::=
  
CREATE SEQUENCE [<owner>.]<sequence_name>
    [INCREMENT BY <integer>]
    [START WITH <integer>]
    [MAXVALUE <integer> | NOMAXVALUE]
    [MINVALUE <integer> | NOMINVALUE]
    [CYCLE | NOCYCLE]
    [CACHE <unsigned_integer> | NOCACHE]
    [ORDER|NOORDER]

<Structure linkcreate_synonym_statement> ::=
  CREATE [PUBLIC] SYNONYM [<owner>.]<synonym_name> FOR <table_name>

<Structure linkcreate_table_statement> ::=
  
CREATE TABLE <table_name> (<column_definition>
    [,<table_description_element>,...]) [IGNORE ROLLBACK] [<sample_definition>]
| CREATE TABLE <table_name> [(<table_description_element>,...)]
    [IGNORE ROLLBACK] [<sample_definition>] AS <query_expression> [<duplicates_clause>]
| CREATE TABLE <table_name> LIKE <table_name> [IGNORE ROLLBACK]

<Structure linkcreate_table_temp> :: =
  
<create_table_statement> for creating temporary tables,
    that is, the table name table_name in the CREATE TABLE statement
    must have the format TEMP.<identifier>.

<Structure linkcreate_trigger_statement> ::=
  
CREATE TRIGGER <trigger_name> FOR <table_name> AFTER <trigger_event,..>
    EXECUTE (<routine>) [WHENEVER <search_condition>]

<Structure linkcreate_user_statement> ::=
  
CREATE USER <user_name> PASSWORD <password>
    [<user_mode>]
    [TIMEOUT <unsigned_integer>]
    [COSTWARNING <unsigned_integer>]
    [COSTLIMIT <unsigned_integer>]
    [[NOT] EXCLUSIVE]
    [DEFAULTCODE <ASCII | EBCDIC | UNICODE>]
| CREATE USER <user_name> PASSWORD <password> LIKE <source_user>
| CREATE USER <user_name> PASSWORD <password> USERGROUP <usergroup_name>

<Structure linkcreate_usergroup_statement> ::=
  CREATE USERGROUP <usergroup_name>
    [<usergroup_mode>]
    [TIMEOUT <unsigned_integer>]
    [COSTWARNING <unsigned_integer>]
    [COSTLIMIT <unsigned_integer>]
    [[NOT] EXCLUSIVE]
    [DEFAULTCODE <ASCII | EBCDIC | UNICODE>]

<Structure linkcreate_view_statement> ::=
  CREATE [OR REPLACE] VIEW <table_name> [(<alias_name>,...)]
    AS <query_expression> [WITH CHECK OPTION]

D

<Structure linkdata_typ> ::=
  CHAR[ACTER] [(<unsigned_integer>)] [ASCII | BYTE | EBCDIC | UNICODE]
| VARCHAR [(<unsigned_integer>)] [ASCII | BYTE | EBCDIC | UNICODE]| LONG [VARCHAR] [ASCII | BYTE | EBCDIC | UNICODE]
| BOOLEAN
| FIXED (<unsigned_integer> [,<unsigned_integer>])
| FLOAT (<unsigned_integer>)
| INT[EGER]
| SMALLINT
| DATE
| TIME
| TIMESTAMP

<Structure linkdate_function> ::=
  ADDDATE (<date_or_timestamp_expression>, <expression>)
| SUBDATE ( <date_or_timestamp_expression>, <expression> )
| DATEDIFF ( <date_or_timestamp_expression>, <date_or_timestamp_expression> )
| DAYOFWEEK ( <date_or_timestamp_expression> )
| WEEKOFYEAR ( <date_or_timestamp_expression> )
| DAYOFMONTH ( <date_or_timestamp_expression> )
| DAYOFYEAR ( <date_or_timestamp_expression> )
| MAKEDATE ( <expression>, <expression> )
| DAYNAME ( <date_or_timestamp_expression> )
| MONTHNAME ( <date_or_timestamp_expression> )

<Structure linkdate_or_timestamp_expression> ::=
  <expression>

<Structure linkdatetimeformat> ::=
  EUR
| INTERNAL
| ISO
| JIS
| USA

<Structure linkdbproc_name> ::=
  [<owner>.]<procedure_name>

<Structure linkdeclare_cursor_statement> ::=
  DECLARE <result_table_name> CURSOR FOR <select_statement>

<Structure linkdefault_predicate> ::=
  <column_spec> <comp_op> DEFAULT

<Structure linkdefault_spec> ::=
  DEFAULT <literal >
| DEFAULT NULL
| DEFAULT USER
| DEFAULT USERGROUP
| DEFAULT DATE
| DEFAULT TIME
| DEFAULT TIMESTAMP
| DEFAULT TRUE
| DEFAULT FALSE
| DEFAULT TRANSACTION
| DEFAULT STAMP
| DEFAULT SERIAL[(<unsigned_integer>)]

Structure linkdelete_rule> ::=
  ON DELETE CASCADE
| ON DELETE RESTRICT
| ON DELETE SET DEFAULT
| ON DELETE SET NULL

<Structure linkdelete_statement> ::=
  DELETE [FROM] <table_name> [<reference_name>]
    [KEY <key_spec>,...] [WHERE <search_condition>]
| DELETE [FROM] <table_name> [<reference_name>]
    WHERE CURRENT OF <result_table_name >

<Structure linkdelimiter_token> ::=
  ( | ) | , | . | + | - | * | / | < | > | <> | != | = | <= | >=
| ¬= | ¬< | ¬>
(for machines with EBCDIC code)
| ~= | ~< | ~>
(for machines with ASCII code)

<Structure linkderived_column> ::=
  <expression> [ [AS] <result_column_name >]
| <result_column_name> = <expression>

<Structure linkdigit> ::=
  0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Structure linkdigit_sequence> ::=
  <digit>...

<Structure linkdistinct_function>::=
  <set_function_name> ( DISTINCT <expression > )

<Structure linkdistinct_spec> ::=
  DISTINCT
| ALL

<Structure linkdomain_name> ::=
  [<owner>.]<identifier>

<Structure linkdouble_quotes> ::=
  "

<Structure linkdrop_dbproc_statement> ::=
  DROP DBPROC <dbproc_name>

<Structure linkdrop_definition> ::=
  DROP <column_name>,... [<cascade_option >] [RELEASE SPACE]
| DROP (<column_name>,...) [<cascade_option>] [RELEASE SPACE]
| DROP CONSTRAINT <constraint_name>
| DROP PRIMARY KEY

<Structure linkdrop_domain_statement> ::=
  DROP DOMAIN <domain_name>

<Structure linkdrop_index_statement> ::=
  DROP INDEX <index_name> [ON <table_name>]

<Structure linkdrop_role_statement> ::=
  DROP ROLE <role_name>

<Structure linkdrop_sequence_statement> ::=
  DROP SEQUENCE [<owner>.]<sequence_name>

<Structure linkdrop_synonym_statement> ::=
  DROP [PUBLIC] SYNONYM [<owner>.]<synonym_name>

<Structure linkdrop_table_statement> ::=
  DROP TABLE <table_name> [<cascade_option>]

<Structure linkdrop_trigger_statement> ::=
  DROP TRIGGER <trigger_name> OF <table_name>

<Structure linkdrop_user_statement> ::=
  DROP USER <user_name> [<cascade_option>]

<Structure linkdrop_usergroup_statement> ::=
  DROP USERGROUP <usergroup_name> [<cascade_option>]

<Structure linkdrop_view_statement> ::=
  DROP VIEW <table_name> [<cascade_option>]

<Structure linkduplicates_clause> ::=
  REJECT DUPLICATES
| IGNORE DUPLICATES
| UPDATE DUPLICATES

E

<Structure linkequal_or_not> ::=
  <>
| =
| Ø =
(for machines with EBCDIC code)
| ~=
(for machines with ASCII code)

<Structure linkexists_predicate> ::=
  EXISTS <subquery >

<Structure linkexists_table_statement> ::=
  EXISTS TABLE <table_name >

<Structure linkexplain_statement> ::=
  EXPLAIN [(<result_table_name>)] <query_statement>
| EXPLAIN [(<result_table_name>)] <single_select_statement >

<Structure linkexponent> ::=
  [<sign>][[<digit>]<digit>]<digit>

<Structure linkexpression> ::=
  <term>
| <expression> + <term>
| <expression> - <term>

<Structure linkexpression_list> ::=
  (<expression>,...)

<Structure linkextended_expression> ::=
  <expression>
| DEFAULT
| STAMP

<Structure linkextended_letter> ::=
  #
| @
| $

<Structure linkextended_value_spec> ::=
  <value_spec>
| DEFAULT
| STAMP

<Structure linkextraction_function> ::=
  YEAR ( <date_or_timestamp_expression > )
| MONTH ( <date_or_timestamp_expression> )
| DAY ( <date_or_timestamp_expression> )
| HOUR ( <time_or_timestamp_expression > )
| MINUTE ( <time_or_timestamp_expression> )
| SECOND ( <time_or_timestamp_expression> )
| MICROSECOND ( <expression> )
| TIMESTAMP ( <expression>[, <expression> ] )
| DATE ( <expression> )
| TIME ( <expression> )

F

<Structure linkfactor> ::=
  [<sign>] <value_spec>
| [<sign>] <column_spec>
| [<sign>] <function_spec>
| [<sign>] <set_function_spec>
| <scalar_subquery>
| <expression>

<Structure linkfetch_statement> ::=
  FETCH [FIRST | LAST | NEXT | PREV | <position> | SAME] [<result_table_name>]
    INTO <parameter_spec>,...

<Structure linkfinal_select> ::=
  <select_statement>

<Structure linkfirst_character> ::=
  <letter>
| <extended_letter>
| <language_specific_character>

<Structure linkfirst_password_character> ::=
  <letter>
| <extended_letter>
| <language_specific_letter>
| <digit>

<Structure linkfixed_point_literal> ::=
  [<sign>]<digit_sequence>[.<digit_sequence>]
| [sign]<digit_sequence>.
| [sign].<digit_sequence>

<Structure linkfloating_point_literal> ::=
  <mantissa>E<exponent>
| <mantissa>e<exponent>

<Structure linkformal_parameter> ::=
  IN <argument> <data_type>
| OUT <argument> <data_type>
| INOUT <argument> <data_type>

<Structure linkfrom_clause> ::=
  FROM <from_table_spec>,...

<Structure linkfrom_table_spec> ::=
  <table_name> [<reference_name>]
| <result_table_name> [<reference_name>]
| (<query_expression>) [<reference_name>]
| <joined_table>

<Structure linkfunction_spec> ::=
  <arithmetic_function>
| <trigonometric_function>
| <string_function>
| <date_function>
| <time_function>
| <extraction_function>
| <special_function>
| <conversion_function>

G

<Structure linkgrant_statement> ::=
  GRANT <priv_spec>,... TO <grantee>,... [WITH GRANT OPTION]
| GRANT EXECUTE ON <dbproc_name>  TO <grantee>,...
| GRANT SELECT ON <sequence_name> TO <grantee>,... [WITH GRANT OPTION]

<Structure linkgrant_user_statement> ::=
  GRANT USER <granted_users> [FROM <user_name>] TO <user_name>

<Structure linkgrant_usergroup_statement> ::=
  GRANT USERGROUP <granted_usergroups> [FROM <user_name>] TO <user_name>

<Structure linkgranted_usergroups> ::=
  <usergroup_name>,...
| *

<Structure linkgranted_users> ::=
  <user_name>,...
| *

<Structure linkgrantee> ::=
  PUBLIC
| <user_name>
| <usergroup_name>
| <role_name>

<Structure linkgroup_clause> ::=
  GROUP BY <expression>,...

H

<Structure linkhaving_clause> ::=
  HAVING <search_condition>

<Structure linkhex_digit> ::=
  0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
| A | B | C | D | E | F
| a | b | c | d | e | f

<Structure linkhex_digit_seq> ::=
  <hex_digit><hex_digit>
| <hex_digit_seq><hex_digit><hex_digit>

<Structure linkhex_literal> ::=
  x''
| X''
| x'<hex_digit_seq>'
| X'<hex_digit_seq>'

<Structure linkhours> ::=
  <expression>

I

<Structure linkidentifier> ::=
  <simple_identifier>
| <double quotes><special_identifier><double_quotes>

<Structure linkidentifier_tail_character> ::=
  <letter>
| <extended_letter>
| <language_specific_character>
| <digit>
| <underscore>

<Structure linkif_statement> ::=
  IF <search_condition> THEN <statement> [ELSE <statement>]

<Structure linkin_predicate> ::=
  <expression> [NOT] IN <subquery>
| <expression> [NOT] IN <expression_list>
| <expression_list> [NOT] IN <subquery>
| <expression_list> [NOT] IN (<expression_list>,...)

<Structure linkindex_name> ::=
  <identifier>

<Structure linkindicator_name> ::=
  <parameter_name>

<Structure linkinitial_select> ::=
  <query_spec>

<Structure linkinsert_expression> ::=
  <extended_expression>
| <subquery>

<Structure linkinsert_statement> ::=
  INSERT [INTO] <table_name> [(<column_name>,...)]
    VALUES (<insert_expression>,...) [<duplicates_clause>]
| INSERT [INTO] <table_name> [(<column_name>,...)]
    <query_expression> [<duplicates_clause>]
| INSERT [INTO] <table_name> SET <set_insert_clause>,... [<duplicates_clause>]

<Structure linkinteger> ::=
  [sign]<unsigned_integer>

J

<Structure linkjoin_predicate> ::=
  <expression> [<outer_join_indicator>] <comp_op> <expression> [<outer_join_indicator>]

<join_spec> ::=
  ON <search_condition>

<Structure linkjoined_table> ::=
  <from_table_spec> CROSS JOIN <from_table_spec>
| <from_table_spec> [INNER] JOIN <from_table_spec> <join_spec>
| <from_table_spec> [<LEFT|RIGHT|FULL> [OUTER]] JOIN
    <from_table_spec> <join_spec>

K

<Structure linkkey_definition> ::
  PRIMARY KEY (<column_name>,...)

<Structure linkkey_or_not_null_spec> ::=
  [PRIMARY] KEY
| NOT NULL [WITH DEFAULT]

<Structure linkkey_spec> ::=
  <column_name> = <value_spec>

<Structure linkkey_word> ::=
  <not_reserved_key_word>
| <reserved_keyword>

L

<Structure linklanguage_specific_character> ::=
  <every letter that occurs in a Northern, Central, or Southern European language
  and is not included in the <letter> list>
| <for UNICODE-enabled databases: every character that is not included in the ASCII code list from 0 to 127>

<Structure linkletter> ::=
  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
| 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

<Structure linklike_expression> ::=
  <expression>
| '<pattern_element>...'

<Structure linklike_predicate> ::=
  <expression> [NOT] LIKE <like_expression> [ESCAPE <expression>]

<Structure linkliteral> ::=
  <string_literal>
| <numeric_literal>

<Structure linklocal_variable> ::=
  <variable_name> <data_type>

<Structure linklocal_variable_list> ::=
  <local_variable>
| <local_variable_list>;<local_variable>

<Structure linklocal_variables> ::=
  VAR <local_variable_list>;

<Structure linklock_option> ::=
  WITH LOCK [(IGNORE)|(NOWAIT)] [EXCLUSIVE | OPTIMISTIC] [ISOLATION LEVEL <unsigned_integer>]

<Structure linklock_spec> ::=
  TABLE <table_name>,...
| <row_spec>...
| TABLE <table_name>,... <row_spec>...

<Structure linklock_statement> ::=
  LOCK [(WAIT)|(NOWAIT)] <lock_spec> IN SHARE MODE
| LOCK [(WAIT)|(NOWAIT)] <lock_spec> IN EXCLUSIVE MODE
| LOCK [(WAIT)|(NOWAIT)] <row_spec>... OPTIMISTIC
| LOCK [(WAIT)|(NOWAIT)] <lock_spec> IN SHARE MODE <lock_spec> IN EXCLUSIVE MODE

M

<Structure linkmantissa> ::=
  <fixed_point_literal>

<Structure linkmapchar_set_name> ::=
  <identifier>

<Structure linkmatch_char> ::=
  Every character except
    %
  | X'1F'
  | <underscore>
  | X'1E'

<Structure linkmatch_set> ::=
  
<underscore>
| X'1E'
| <match_char>

<Structure linkmatch_string> ::=
  %
| X'1F'

<Structure linkminutes> ::=
  <expression>

<Structure linkmodify_definition> ::=
  MODIFY (<column_name> [<data_type>] [<column_attributes>]...)

<Structure linkmonitor_statement> ::=
  MONITOR INIT

N

<Structure linknamed_query_expression> ::=
  <named_query_term>
| <named_query_expression> UNION [ALL] <query_term>
| <named_query_expression> EXCEPT [ALL] <query_term>

<Structure linknamed_query_primary> ::=
  <named_query_spec>
| (<named_query_expression>)

<Structure linknamed_query_spec> ::=
  SELECT [<distinct_spec>] <result_table_name> (<select_column>,...) <table_expression>

<Structure linknamed_query_term> ::=
  <named_query_primary>
| <named_query_term> INTERSECT [ALL] <query_primary>

<Structure linknamed_select_statement> ::=
  <named_query_expression> [<order_clause>] [<update_clause>] [<lock_option>] [FOR REUSE]

<Structure linknew_index_name> ::=
  <index_name>

<Structure linknew_table_name> ::=
  <table_name>

<Structure linknext_stamp_statement> ::=
  NEXT STAMP [INTO] <parameter_name>

<Structure linknot_reserved_key_word> ::=

A CTION

ACTIVATE

ADABAS

ADD

ADDRESS

ADD_MONTHS

AFTER

ANALYZE

AND

ANSI

APPEND

ARCHIVE

AS

ASC

AT

AUTO

AUTOSAVE

 

 

 

B ACKUP_PAGES

BAD

BEFORE

BEGIN

BEGINLOAD

BEGINPROC

BETWEEN

BLOCK

BLOCKSIZE

BOTH

BREAK

BUFFER

BUFFERPOOL

BWHIERACHY

BY

C ACHE

CACHELIMIT

CACHES

CALL

CANCEL

CASCADE

CAST

CATALOG

CATCH

CHECKPOINT

CLEAR

CLOSE

CLUSTER

COMMENT

COMMIT

COMPLETE

COMPUTE

CONFIG

CONNECT

CONSTRAINTS

CONTAINER

CONTINUE

COSTLIMIT

COSTWARNING

CREATE

CURRENT_DATE

CURRENT_SCHEMA

CURRENT_TIME

CURRENT_TIMESTAMP

CURRVAL

CURSOR

CYCLE

 

 

 

D ATA

DAYS

DB2

DBA

DBFUNCTION

DBPROC

DBPROCEDURE

DB_ABOVE_LIMIT

DB_BELOW_LIMIT

DECLARE

DEFAULTCODE

DEGREE

DESC

DESCRIBE

DEVICE

DIAGNOSE

DIMENSION

DISABLE

DIV

DO

DOMAIN

DROP

DSETPASS

DUPLICATES

DYNAMIC

E DITPROC

ELSE

ENABLE

END

ENDLOAD

ENDPROC

ERROR

ESCAPE

ESTIMATE

EUR

EVENT

EXCLUSIVE

EXECUTE

EXPLAIN

EXPLICIT

EXTRACT

 

 

 

 

F ACT

FALSE

FETCH

FILE

FLUSH

FORCE

FOREIGN

FORMAT

FREEPAGE

FVERSION

G ET

GRANT

 

 

 

H IGH

HOLD

HOURS

 

 

I DENTIFIED

IF

IMPLICIT

IN

INCREMENT

INDEXNAME

INDICATOR

INFO

INIT

INITRANS

INOUT

INPROC

INSTANCE

INSTR

IS

ISO

ISOLATION

 

 

 

J AVA

JIS

 

 

 

K EEP

 

 

 

 

L ABEL

LANGUAGE

LAST_DAY

LEADING

LEVEL

LIKE

LOAD

LOCAL

LOCK

LOGFULL

LOGWRITER

LOG_ABOVE_LIMIT

LOW

 

 

M AXTRANS

MAXVALUE

MEDIANAME

MEDIUM

MICROSECONDS

MIGRATE

MINUS

MINUTES

MINVALUE

MODE

MODIFY

MONITOR

MONTHS

MONTHS_BETWEEN

 

N AME

NEW

NEW_TIME

NEXTVAL

NEXT_DAY

NLSSORT

NLS_DATE_FORMAT

NLS_DATE_LANGUAGE

NLS_LANGUAGE

NLS_SORT

NOCACHE

NOCYCLE

NOLOG

NOMAXVALUE

NOMINVALUE

NONE

NOORDER

NOREWIND

NORMAL

NOSORT

NOWAIT

NUMBER

NVL

 

 

O BID

OFF

ONLY

OPEN

OPTIMISTIC

OPTIMIZE

OPTION

OR

ORACLE

OUT

OUTER

OVERWRITE

 

 

 

P ACKAGE

PAGE

PAGES

PARAM

PARSE

PARSEID

PASSWORD

PCTFREE

PCTUSED

PERCENT

PING

PIPE

POS

PRECISION

PREPARE

PRIV

PRIVILEGES

PROC

PROCEDURE

PSM

PUBLIC

 

 

 

 

Q UICK

 

 

 

 

R ANGE

RAW

RAWTOHEX

READ

RECURSIVE

REFERENCES

REGISTER

RELEASE

REMOTE

REMOVE

RENAME

RESOURCE

RESTART

RESTORE

RESTRICT

RESUME

RETURN

RETURNS

REUSE

REVOKE

ROLE

ROLLBACK

ROW

ROWNUM

ROWS

S AME

SAMPLE

SAPR3

SAVE

SAVEPOINT

SCHEMA

SECONDS

SEGMENT

SELECTIVITY

SEQUENCE

SERVERDB

SESSION

SHARE

SHUTDOWN

SIMILAR

SOUNDS

SQLID

SQLMODE

STANDARD

STANDBY

START

STARTPOS

STAT

STATE

STOP

STORAGE

SUBPAGES

SUBTRANS

SUSPEND

SWITCH

SYNCHRONIZE

SYNONYM

SYSDATE

 

 

T ABID

TABLESPACE

TAKEOVER

TAPE

TEMP

THEN

TIMEOUT

TOPIC

TO_CHAR

TO_DATE

TO_NUMBER

TRACE

TRAILING

TRIGGER

TRUE

TRY

TYPE

 

 

 

U NIQUE

UNKNOWN

UNLOAD

UNLOCK

UNTIL

UNUSED

USA

USAGE

USERID

 

V ALIDPROC

VARCHAR2

VARYING

VERIFY

VERSION

VIEW

VOLUME

VSIZE

VTRACE

 

W AIT

WHENEVER

WHILE

WORK

WRITE

WRITER

 

 

 

 

Y EARS

 

 

 

 

 

<Structure linknull_predicate> ::=
  <expression> IS [NOT] NULL

<Structure linknumeric_literal> ::=
  <fixed_point_literal >
| <floating_point_literal>

O

<Structure linkobject_spec> ::=
  COLUMN <table_name>.<column_name>
| DBPROC[EDURE] <dbproc_name>
| DOMAIN <domain_name>
| FOREIGN KEY <table_name>.<referential_constraint_name>
| INDEX <index_name> ON <table_name>
| SEQUENCE <sequence_name>
| [PUBLIC] SYNONYM <synonym_name>
| TABLE <table_name>
| TRIGGER <trigger_name>.<table_name>
| USER <user_name>
| USERGROUP <usergroup_name>
| <parameter_name>

<Structure linkold_index_name> ::=
  <index_name>

<Structure linkold_table_name> ::=
  <table_name>

<Structure linkopen_cursor_statement> ::=
  OPEN <result_table_name>

<Structure linkorder_clause> ::=
  ORDER BY <sort_spec>,...

<Structure linkouter_join_inidicator> ::=
  (+)

<Structure linkowner> ::=
  <user_name>
| <usergroup_name>
| TEMP

P

<Structure linkparameter_name> ::=
  :<identifier>
| :<identfier>(<identifier>)
| :<identfier>(.<identifier>.)

<Structure linkparameter_spec> ::=
  <parameter_name> [<indicator_name>]

<Structure linkpassword> ::=
  <identifier>
| <first_password_character>[<identifier_tail_character>...]

<Structure linkpattern_element> ::=
  <match_string>
| <match_set>

<Structure linkposition> ::=
  POS (<unsigned_integer>)
| POS (<parameter_spec>)
| ABSOLUTE <integer>
| ABSOLUTE <parameter_spec>
| RELATIVE <integer>
| RELATIVE <parameter_spec>

<Structure linkpredicate> ::=
  <between_predicate>
| <bool_predicate>
| <comparison_predicate>
| <default_predicate>
| <exists_predicate>
| <in_predicate>
| <join_predicate>
| <like_predicate>
| <null_predicate>
| <quantified_predicate>
| <rowno_predicate>
| <sound_predicate>

<Structure linkpriv_spec> ::=
  ALL [PRIV[ILEGES]] ON [TABLE] <table_name>,...
| <privilege>,...  ON [TABLE] <table_name>,...
| <role_name>

<Structure linkprivilege> ::=
  INSERT
| UPDATE [(<column_name>,...)]
| SELECT [(<column_name>,...)]
| SELUPD [(<column_name>,...)]
| DELETE
| INDEX
| ALTER
| REFERENCES [(<column_name>,...)]

<Structure linkprocedure_name> ::=
  <identifier>

Q

<Structure linkquantified_predicate> ::=
  <expression> <comp_op> <quantifier> <expression_list>
| <expression> <comp_op> <quantifier> <subquery>
| <expression_list> <equal_or_not> <quantifier> (<expression_list>,...)
| <expression_list> <equal_or_not> <quantifier> <subquery>

<Structure linkquantifier> ::=
  ALL
| SOME
| ANY

<Structure linkquery_expression> ::=
  <query_term>
| <query_expression> UNION [ALL] <query_term>
| <query_expression> EXCEPT [ALL] <query_term>

<Structure linkquery_primary> ::=
  <query_spec>
| (<query_expression>)

<Structure linkquery_spec> ::=
  SELECT [<distinct_spec>] <select_column>,... <table_expression>

<Structure linkquery_statement> ::=
  <declare_cursor_statement>
| <recursive_declare_cursor_statement>
| <named_select_statement>
| <select_statement>

<Structure linkquery_term> ::=
  <query_primary>
| <query_term> INTERSECT [ALL] <query_primary>

R

<Structure linkrecursive_declare_cursor_statement> ::=
  DECLARE <result_table_name> CURSOR FOR WITH RECURSIVE <reference_name>     (<alias_name>,...) AS (<initial_select> UNION ALL <recursive_select>) <final_select>

<Structure linkrecursive_select> ::=
  <query_spec>

<Structure linkreference_name> ::=
  <identifier>

<Structure linkreferenced_column> ::=
  <column_name>

<Structure linkreferenced_table> ::=
  <table_name>

<Structure linkreferencing_column> ::=
  <column_name>

<Structure linkreferential_constraint_definition> ::=
  FOREIGN KEY [<referential_constraint_name>] (<referencing_column>,...)
    REFERENCES <referenced_table> [(<referenced_column>,...)] [<delete_rule>]

<Structure linkreferential_constraint_name> ::=
  <identifier>

<Structure linkregular_token> ::=
  <literal>
| <key_word>
| <identifier>
| <parameter_name>

<Structure linkrelease_statement> ::=
  COMMIT [WORK] RELEASE
| ROLLBACK [WORK] RELEASE

<Structure linkrename_column_statement> ::=
  RENAME COLUMN <table_name>.<column_name> TO <column_name>

<Structure linkrename_index_statement> ::=
  RENAME INDEX <old_index_name> [ON <table_name>] TO <new_index_name>

<Structure linkrename_synonym_statement> ::=
  RENAME [PUBLIC] SYNONYM <old_synonym_name> TO <new_synonym_name>

<Structure linkrename_table_statement> ::=
  RENAME TABLE <old_table_name> TO <new_table_name>

<Structure linkrename_user_statement> ::=
  RENAME USER <user_name> TO <new_user_name>

<Structure linkrename_usergroup_statement> ::=
  RENAME USERGROUP <usergroup_name> TO <new_usergroup_name>

<Structure linkrename_view_statement> ::=
  RENAME VIEW <old_table_name> TO <new_table_name>

<Structure linkreserved_key_word> ::=

A BS

ABSOLUTE

ACOS

ADDDATE

ADDTIME

ALL

ALPHA

ALTER

ANY

ASCII

ASIN

ATAN

ATAN2

AVG

 

B INARY

BIT

BOOLEAN

BYTE

 

C ASE

CEIL

CEILING

CHAR

CHARACTER

CHECK

CHR

COLUMN

CONCAT

CONSTRAINT

COS

COSH

COT

COUNT

CROSS

CURDATE

CURRENT

CURTIME

 

 

D ATABASE

DATE

DATEDIFF

DAY

DAYNAME

DAYOFMONTH

DAYOFWEEK

DAYOFYEAR

DBYTE

DEC

DECIMAL

DECODE

DEFAULT

DEGREES

DELETE

DIGITS

DISTINCT

DOUBLE

 

 

E BCDIC

EXCEPT

EXISTS

EXP

EXPAND

F IRST

FIXED

FLOAT

FLOOR

FOR

FROM

FULL

 

 

 

G ET_OBJECTNAME

GET_OWNER

GRAPHIC

GREATEST

GROUP

H AVING

HEX

HEXTORAW

HOUR

 

I FNULL

IGNORE

INDEX

INITCAP

INNER

INSERT

INT

INTEGER

INTERNAL

INTERSECT

INTO

 

 

 

 

J OIN

 

 

 

 

K EY

 

 

 

 

L AST

LCASE

LEAST

LEFT

LENGTH

LFILL

LINK

LIST

LN

LOCATE

LOG

LOG10

LONG

LONGFILE

LOWER

LPAD

LTRIM

 

 

 

M AKEDATE

MAKETIME

MAPCHAR

MAX

MBCS

MICROSECOND

MIN

MINUTE

MOD

MONTH

MONTHNAME

 

 

 

 

N ATURAL

NCHAR

NEXT

NO

NOROUND

NOT

NOW

NULL

NUM

NUMERIC

O BJECT

OF

ON

ORDER

 

P ACKED

PI

POWER

PREV

PRIMARY

R ADIANS

REAL

REJECT

RELATIVE

REPLACE

RFILL

RIGHT

ROUND

ROWID

ROWNO

RPAD

RTRIM

 

 

 

S ECOND

SELECT

SELUPD

SERIAL

SET

SHOW

SIGN

SIN

SINH

SMALLINT

SOME

SOUNDEX

SPACE

SQRT

STAMP

STATISTICS

STDDEV

SUBDATE

SUBSTR

SUBSTRING

SUBTIME

SUM

SYSDBA

 

 

T ABLE

TAN

TANH

TIME

TIMEDIFF

TIMESTAMP

TIMEZONE

TO

TOIDENTIFIER

TRANSACTION

TRANSLATE

TRIM

TRUNC

TRUNCATE

 

U CASE

UID

UNICODE

UNION

UPDATE

UPPER

USER

USERGROUP

USING

UTCDATE

UTCDIFF

 

 

 

 

V ALUE

VALUES

VARCHAR

VARGRAPHIC

VARIANCE

W EEK

WEEKOFYEAR

WHEN

WHERE

WITH

Y EAR

 

 

 

 

Z ONED

 

 

 

 

<Structure linkresult_column_name> ::=
  <identifier>

<Structure linkresult_table_name> ::=
  <identifier>

<Structure linkrevoke_statement> ::=
  REVOKE <priv_spec>,... FROM <grantee>,... [<cascade_option>]
| REVOKE EXECUTE ON <dbproc_name> FROM <grantee>,...
| REVOKE SELECT ON <sequence_name> FROM <grantee>,... [<cascade_option>]

<Structure linkrole_name> ::=
  <identifier>

<Structure linkrollback_statement> ::=
  ROLLBACK [WORK]

<Structure linkroutine> ::=
  [<local_variables>] <statement_list>;

<Structure linkroutine_sql_statement> ::=
  <call_statement>
| <close_statement>
| <create_table_temp>
| <declare_cursor_statement>
| <delete_statement>
| <fetch_statement>
| <insert_statement>
| <lock_statement>
| <select_statement>
| <named_select_statement>
| <single_select_statement>
| <subtrans_statement>
| <update_statement>

<Structure linkrow_spec> ::=
  ROW <table_name> KEY <key_spec>,...
| ROW <table_name> CURRENT OF <result_table_name>

<Structure linkrowno_column> ::=
  ROWNO [<result_column_name>]
| <result_column_name> = ROWNO

<Structure linkrowno_predicate> ::=
  ROWNO < <unsigned_integer>
| ROWNO < <parameter_spec>
| ROWNO <= <unsigned_integer>
| ROWNO <= <parameter_spec>

S

<Structure linksample_definition> ::=
  SAMPLE <unsigned_integer>  ROWS
| SAMPLE <unsigned_integer> PERCENT

<Structure linkscalar_subquery> ::=
  <subquery>

<Structure linksearch_and_result_spec> ::=
  <search_expression>, <result_expression>

<Structure linksearch_condition> ::=
  <boolean_term>
| <search_condition> OR <boolean_term>

<Structure linksearched_case_function> ::=
  WHEN <search_condition> THEN <result_expression>
    [...]
  [ELSE <default_expression>]
END

<Structure linksearched_case_statement> ::=
  CASE
    <searched_case_when_clause>…
    [<case_else_clause>]
  END [CASE]

<Structure linksearched_case_when_clause> ::=
  WHEN <search_condition> THEN <statement>

<Structure linkseconds> ::=
  <expression>

<Structure linkselect_column> ::=
  <table_columns>
| <derived_column>
| <rowno_column>
| <stamp_column>

<Structure linkselect_statement> ::=
  <query_expression> [<order_clause>] [<update_clause>] [<lock_option>]
    [FOR REUSE]

<Structure linksequence_name> ::=
  <identifier>

<Structure linkset_function_name> ::=
  COUNT
| MAX
| MIN
| SUM
| AVG
| STDDEV
| VARIANCE

<Structure linkset_function_spec> ::=
  COUNT (*)
| <distinct_function>
| <all_function>

<Structure linkset_insert_clause> ::=
  <column_name> = <extended_value_spec>

<Structure linkset_statement> ::=
  SET ROLE ALL [EXCEPT <role_name>]
| SET ROLE NONE
| SET ROLE <role_name> [IDENTIFIED BY <password>]
| SET ISOLATION LEVEL <unsigned_integer>

<Structure linkset_update_clause> ::=
  <column_name> = <extended_expression >
| <column_name>,... = (<extended_expression>,...)
| (<column_name>,...) = (<extended_expression>,...)
| <column_name> = <subquery>
| (<column_name>,...) = <subquery>

<Structure linksign> ::=
  +
| -

<Structure linksimple_case_function> ::=
  CASE <check_expression>,
    WHEN <search_expression> THEN <result_expression>
      [...]
    [ELSE <default_expression>]
  END

<Structure linksimple_case_statement> ::=
  CASE <expression>
    <simple_case_when_clause>...
    [<case_else_clause>]
  END [CASE]

<Structure linksimple_case_when_clause> ::=
  WHEN <literal>[, ...] THEN <statement>

<Structure linksimple_identifier> ::=
  <first_character>[<identifier_tail_character>...]

<Structure linksingle_select_statement> ::=
  SELECT [<distinct_spec>] <select_column>,... INTO <parameter_spec>,...
    FROM <from_table_spec>,...[<where_clause>] [<group_clause>]
    [<having_clause>] [<lock_option>]

<Structure linksort_spec> ::=
  <unsigned_integer> [ASC | DESC]
| <expression> [ASC | DESC]

<Structure linksound_predicate> ::=
  <expression> [NOT] SOUNDS [LIKE] <expression>

<Structure linksource_user> ::=
  <user_name>

<Structure linkspecial_character> ::=
  
every character except
    <digit>
  | <letter>
  | <extended_letter>
  | <hex_digit>
  | <language_specific_character >
  | <character for the end of a line in a file>

<Structure linkspecial_function> ::=
  VALUE (<expression>,<expression>,...)
| GREATEST (<expression>,<expression>,...)
| LEAST (<expression>,<expression>,...)
| DECODE (<check_expression>,<search_and_result_spec>,...[,<default_expression>])
| case_function

<Structure linkspecial_identifier> ::=
  <special_identifier_character>...

<Structure linkspecial_identifier_character> ::=
  Any character

<Structure linksql_comment> ::=
  /*<comment text >*/
| --<
comment text >

<Structure linkstamp_column> ::=
  STAMP [<result_column_name>]
| <result_column_name> = STAMP

<Structure linkstatement> ::=
  BEGIN <statement_list> END
| BREAK
| CONTINUE
| CONTINUE EXECUTION
| <if_statement>
| <while_statement>
| <assignment_statement>
| <case_statement>
| RETURN
| STOP (<expression> [,<expression>] )
| TRY <statement_list>; CATCH <statement>
| <routine_sql_statement>

<Structure linkstatement_list> ::=
  <statement>
| <statement_list> ; <statement>

<Structure linkstring_function> ::=
  <string_spec> || <string_spec>
| <string_spec> & <string_spec>
| SUBSTR (<string_spec>,<expression>[,<expression>])
| LFILL (<string_spec>,<string_literal>[,<unsigned_integer>])
| RFILL (<string_spec>,<string_literal>[,<unsigned_integer>])
| LPAD (<string_spec>,<expression>,<string_literal>[,<unsigned_integer>])
| RPAD (<string_spec>,<expression>,<string_literal>[,<unsigned_integer>])
| TRIM (<string_spec>[,<string_spec>])
| LTRIM (<string_spec>[,<string_spec>])
| RTRIM (<string_spec>[,<string_spec>])
| EXPAND (<string_spec>,<unsigned_integer>)
| UPPER (<string_spec>)
| LOWER (<string_spec>)
| INITCAP (<string_spec>)
| REPLACE (<string_spec>,<string_spec>[,<string_spec>])
| TRANSLATE (<string_spec>,<string_spec>,<string_spec>)
| MAPCHAR (<string_spec>[,<unsigned_integer>][,<mapchar_set_name>])
| ALPHA (<string_spec>[,<unsigned_integer>])
| ASCII (<string_spec>)
| EBCDIC (<string_spec>)
| SOUNDEX (<string_spec>)
| GET_OBJECTNAME (<string_literal)
| GET_OWNER (<string_literal>)

<Structure linkstring_literal> ::=
  ''
| '<character>...'
| <hex_literal>

<Structure linkstring_spec> ::=
  <expression >

<Structure linksubquery> ::=
  (<query_expression>)

<Structure linksubtrans_statement> ::=
  SUBTRANS BEGIN
| SUBTRANS END
| SUBTRANS ROLLBACK

<Structure linksynonym_name> ::=
  <identifier>

T

<Structure linktable_columns> ::=
  *
| <table_name>.*
| <reference_name>.*

<Structure linktable_description_element> ::=
  <column_definition>
| <constraint_definition>
| <referential_constraint_definition>
| <key_definition>
| <unique_definition>

<Structure linktable_expression> ::=
  <from_clause> [<where_clause>] [<group_clause>] [<having_clause>]

<Structure linktable_name> ::=
  [<owner>.]<identifier>

<Structure linkterm> ::=
  <factor>
| <term> * <factor>
| <term> / <factor>
| <term> DIV <factor>
| <term> MOD <factor>

Structure linktime_expression> ::=
  <expression>

<Structure linktime_or_timestamp_expresion> ::=
  <expression>

<Structure linktime_function> ::=
  ADDTIME (<time_or_timestamp_expression>, <time_expression> )
| SUBTIME ( <time_or_timestamp_expression>, <time_expression> )
| TIMEDIFF ( <time_or_timestamp_expression>, <time_or_timestamp_expression> )
| MAKETIME (<hours>, <minutes>, <seconds> )

<Structure linktrigger_event> ::
  INSERT
| UPDATE [(<column_list>)]
| DELETE

<Structure linktrigger_name> ::=
  <identifier>

<Structure linktrigonometric_function> ::=
  COS ( <expression> )
| SIN ( <expression> )
| TAN ( <expression> )
| COT ( <expression> )
| COSH ( <expression> )
| SINH ( <expression> )
| TANH ( <expression> )
| ACOS ( <expression> )
| ASIN ( <expression> )
| ATAN ( <expression> )
| ATAN2 ( <expression>, <expression> )
| RADIANS ( <expression> )
| DEGREES ( <expression> )

U

<Structure linkunderscore> ::=
  _

<Structure linkunique_definition> ::=
  [CONSTRAINT <index_name>] UNIQUE (<column_name>,...)

<Structure linkunlock_statement> ::=
  UNLOCK <row_spec>... IN SHARE MODE
| UNLOCK <row_spec>... IN EXCLUSIVE MODE
| UNLOCK <row_spec>... IN SHARE MODE <row_spec>... IN EXCLUSIVE MODE
| UNLOCK <row_spec>... OPTIMISTIC

<Structure linkunsigned_integer> ::=
  <numeric_literal>

<Structure linkupdate_clause > ::=
  FOR UPDATE [OF <column_name>,...] [NOWAIT]

<Structure linkupdate_statement> ::=
  UPDATE [OF] <table_name> [<reference_name>] SET <set_update_clause>,...
    [KEY <key_spec>,...] [WHERE <search_condition>]
| UPDATE [OF] <table_name> [<reference_name>] (<column_name>,...)
    VALUES (<extended_value_spec>,...) [KEY <key_spec>,...]
    [WHERE <search_condition>]
| UPDATE [OF] <table_name> [<reference_name>] SET <set_update_clause>,...
    WHERE CURRENT OF <result_table_name>
| UPDATE [OF] <table_name> [<reference_name>] (<column_name>,...)
    VALUES (<extended_value_spec>,...) WHERE CURRENT OF <result_table_name>

<Structure linkupdate_statistics_statement> ::=
  UPDATE STAT[ISTICS] COLUMN <table_name>.<column_name>
    [ESTIMATE [<sample_definition>]]
| UPDATE STAT[ISTICS] COLUMN (<column_name>,...) FOR <table_name>
    [ESTIMATE [<sample_definition>]]
| UPDATE STAT[ISTICS] COLUMN (*) FOR <table_name>
    [ESTIMATE [<sample_definition>]]
| UPDATE STAT[ISTICS] <table_name> [ESTIMATE [<sample_definition>]]
| UPDATE STAT[ISTICS] [<owner>.][<identifier>]* [ESTIMATE [<sample_definition>]]

<Structure linkuser_mode> ::=
  DBA
| RESOURCE
| STANDARD

<Structure linkuser_name> ::=
  <identifier>

<Structure linkusergroup_mode> ::=
  RESOURCE
| STANDARD

<Structure linkusergroup_name> ::=
  <identifier>

V

<Structure linkvalue_spec > ::=
  <literal>
| <parameter_spec>
| NULL
| USER
| USERGROUP
| SYSDBA
| UID
| [<owner >.]<sequence_name>.NEXTVAL
| [<owner>.]<sequence_name>.CURRVAL
| <table_name>.CURRVAL
| DATE
| TIME
| TIMESTAMP
| UTCDATE
| TIMEZONE
| UTCDIFF
| TRUE
| FALSE
| TRANSACTION

<Structure linkvariable_name> ::=
  <identifier>

<Structure linkwhere_clause> ::=
  WHERE <search_condition>

<Structure linkwhile_statement> ::=
  WHILE <search_condition> DO <statement>