référence de table

Une référence de table spécifie une table de résultats intermédiaire.

Read syntax diagramSkip visual syntax diagramsingle-table-referencesingle-view-referencesingle-nickname-referenceonly-table-referenceouter-table-referenceanalyze_table-expressionnested-table-expressiondata-change-table-referencetable-function-referencecollection-derived-tablexmltable-expressionjoined-table1external-table-reference
single-table-reference
Read syntax diagramSkip visual syntax diagramtable-name period-specification correlation-clause tablesample-clause
single-view-reference
Read syntax diagramSkip visual syntax diagramview-name period-specification correlation-clause
single-nickname-reference
Read syntax diagramSkip visual syntax diagramnickname correlation-clause
only-table-reference
Read syntax diagramSkip visual syntax diagramONLY( table-nameview-name ) correlation-clause
outer-table-reference
Read syntax diagramSkip visual syntax diagramOUTER( table-nameview-name ) correlation-clause
analyze_table-expression
Read syntax diagramSkip visual syntax diagramtable-nameview-nameANALYZE_TABLE(implementation-clause )
nested-table-expression
Read syntax diagramSkip visual syntax diagram LATERAL2continue-handlerWITHIN (WITH,common-table-expressionfullselect) correlation-clause
data-change-table-reference
Read syntax diagramSkip visual syntax diagram FINALNEWTABLE(insert-statement)FINALNEWOLDTABLE(searched-update-statement)OLD TABLE(searched-delete-statement) correlation-clause
table-function-reference
Read syntax diagramSkip visual syntax diagramTABLE( function-name(,expression)table-UDF-cardinality-clause) correlation-clausetyped-correlation-clause3
collection-derived-table
Read syntax diagramSkip visual syntax diagramUNNEST-table-function WITH ORDINALITY4 correlation-clause
xmltable-expression
Read syntax diagramSkip visual syntax diagram xmltable-function5 correlation-clause
external-table-reference
Read syntax diagramSkip visual syntax diagram EXTERNAL file-name AS correlation_name(,column-definition)LIKEtable-name1view-namenickname6 USING (,optionoption-value)
period-specification
Read syntax diagramSkip visual syntax diagramFOR SYSTEM_TIMEBUSINESS_TIME AS OFvalueFROMvalue1TOvalue2BETWEENvalue1ANDvalue2
correlation-clause
Read syntax diagramSkip visual syntax diagramAScorrelation-name (,column-name)
tablesample-clause
Read syntax diagramSkip visual syntax diagramTABLESAMPLEBERNOULLISYSTEM(numeric-expression1) REPEATABLE(numeric-expression2)
implementation-clause
Read syntax diagramSkip visual syntax diagramIMPLEMENTATION'string '
continue-handler
Read syntax diagramSkip visual syntax diagramRETURN DATA UNTIL ,specific-condition-value
table-UDF-cardinality-clause
Read syntax diagramSkip visual syntax diagram CARDINALITYinteger-constantCARDINALITY MULTIPLIERnumeric-constant
typed-correlation-clause
Read syntax diagramSkip visual syntax diagramAScorrelation-name (,column-namedata-type)
specific-condition-value
Read syntax diagramSkip visual syntax diagramFEDERATED SQLSTATEVALUEstring-constant SQLCODE,integer-constant
column-definition
Read syntax diagramSkip visual syntax diagram column-name built-in-typeNOT NULL
built-in-type
Read syntax diagramSkip visual syntax diagramSMALLINTINTEGERINTBIGINTDECIMALDECNUMERICNUM(5,0)( precision-integer,0, scale-integer)FLOAT(53)( integer)REALDOUBLEPRECISIONDECFLOAT(34)(16)CHARACTERCHAR(1)( integerOCTETSCODEUNITS32)VARCHARCHARACTERCHARVARYING( integerOCTETSCODEUNITS32)FOR BIT DATACLOBCHARACTERCHARLARGE OBJECT(65535)( integerKOCTETSCODEUNITS32)GRAPHIC(1)( integerCODEUNITS16CODEUNITS32)VARGRAPHIC( integerCODEUNITS16CODEUNITS32)DBCLOB(32767)( integerKCODEUNITS16CODEUNITS32)NCHARNATIONALCHARCHARACTER(1)( integer)NVARCHARNCHAR VARYINGNATIONALCHARCHARACTERVARYING( integer)NCLOBNCHAR LARGE OBJECTNATIONAL CHARACTER LARGE OBJECT(16383)( integerK)BINARY(1)( integer)VARBINARYBINARY VARYING(integer)BLOBBINARY LARGE OBJECT(65535)( integerK)DATETIMETIMESTAMP(6)(integer)BOOLEAN
Notes:
  • 1 The syntax for joined-table is covered in a separate topic; refer to joined-table.
  • 2 TABLE can be specified in place of LATERAL.
  • 3 The typed-correlation-clause is required for generic table functions. This clause cannot be specified for any other table functions.
  • 4 WITH ORDINALITY can be specified only if the argument to the UNNEST table function is one or more ordinary array variables or functions with ordinary array return types; an associative array variable or function with an associative array return type cannot be specified (SQLSTATE 428HT).
  • 5 An XMLTABLE function can be part of a table-reference. In this case, subexpressions within the XMLTABLE expression are in-scope of prior range variables in the FROM clause. For more information, see the description of XMLTABLE.
  • 6 Specifying a LIKE clause or at least one column definition is not mandatory for an INSERT INTO <table> SELECT FROM statement, which acts as an implicit LIKE with respect to the INSERT target table.
Une table-reference spécifie une table de résultats intermédiaire.
  • Si une référence de table unique est spécifiée sans spécification de période ou clause d'échantillonnage de table, la table de résultats intermédiaire correspond aux lignes de la table. Si une spécification de période est spécifiée, la table de résultats intermédiaire est constituée des lignes de la table temporelle où la période correspond à la spécification. Si une clause tablesample-clause est spécifiée, la table de résultats intermédiaire est constituée d'un sous-ensemble échantillonné des lignes de la table.
  • Si une référence-vue-unique est spécifiée sans spécification de période, la table de résultats intermédiaire est cette vue. Si une spécification de période est spécifiée, les références de table temporelle dans la vue ne prennent en compte que les lignes où la période correspond à la spécification.
  • Si une référence-pseudonyme-unique est spécifiée, la table de résultats intermédiaire correspond aux données de la source de données de ce pseudonyme.
  • Si only-table-reference est spécifié, la table de résultats intermédiaire se compose uniquement des lignes de la table ou de la vue spécifiée sans tenir compte des sous-tables ou des sous-vues applicables.
  • Si une référence de table externe est spécifiée, la table de résultats intermédiaire représente une table virtuelle basée sur toutes les sous-tables d'une table basée sur un type structuré ou sur les sous-vues d'une vue basée sur un type structuré.
  • Si une expression analyze_table-expression est spécifiée, la table de résultats contient le résultat de l'exécution d'un modèle d'exploration de données spécifique à l'aide d'un fournisseur d'analyse de base de données, d'une implémentation de modèle nommé et de données d'entrée.
  • Si une expression-table-imbriquée est spécifiée, la table de résultats est le résultat de l'instruction FULLSELECT spécifiée.
  • Si data-change-table-reference est spécifié, la table de résultats intermédiaire est l'ensemble des lignes qui sont directement modifiées par l'instruction UPDATE, DELETE ou INSERT recherchée qui est incluse dans la clause.
  • Si table-function-reference est spécifié, la table de résultats intermédiaire est l'ensemble de lignes renvoyées par la fonction de table.
  • Si une table-dérivée-de-collection est spécifiée, la table de résultats intermédiaire est l'ensemble des lignes renvoyées par la fonction UNNEST.
  • Si une expression xmltable-expression est spécifiée, la table de résultats intermédiaire est l'ensemble de lignes renvoyées par la fonction XMLTABLE.
  • Si une table jointe est spécifiée, la table de résultats intermédiaire est le résultat d'une ou de plusieurs opérations de jointure. Pour plus d'informations, voir table jointe.
  • Si une référence de table externe est spécifiée sans clause tablesample-clause, la table de résultats intermédiaire correspond aux lignes de la table externe représentée par le fichier spécifié. Si une clause tablesample est spécifiée, la table de résultats intermédiaire est constituée d'un sous-ensemble échantillonné des lignes de la table externe représentée par le fichier spécifié.
référence-table-unique

Chaque nom-table spécifié en tant que référence-table doit identifier une table existante sur le serveur d'applications ou une table existante sur un serveur distant spécifié à l'aide d'un nom-objet-distant. La table de résultats intermédiaire est le résultat de la table. Si nom-table fait référence à une table basée sur un type structuré, la table de résultats intermédiaire est UNION ALL de la table avec toutes ses sous-tables, avec uniquement les colonnes de nom-table. Une spécification de période peut être utilisée avec une table temporelle pour spécifier la période à partir de laquelle les lignes sont renvoyées en tant que table de résultats intermédiaire. Une clause tablesample peut être utilisée pour spécifier qu'un échantillon des lignes doit être renvoyé en tant que table de résultat intermédiaire.

Si le registre spécial CURRENT TEMPORAL SYSTEM_TIME est défini sur une valeur non null CTST et que nom-table identifie une table temporelle de période système, la référence de table est exécutée comme si elle contenait la spécification suivante avec le registre spécial défini sur la valeur null:
   table-name FOR SYSTEM_TIME AS OF CTST
Si le registre spécial CURRENT TEMPORAL BUSINESS_TIME est défini sur une valeur non nulle TICE et que nom-table identifie une table temporelle de période d'application, la référence de table est exécutée comme si elle contenait la spécification suivante avec le registre spécial défini sur la valeur null:
   table-name FOR BUSINESS_TIME AS OF CTBT
référence-vue-unique
Chaque nom-vue spécifié en tant que référence de table doit identifier l'un des objets suivants:
  • Une vue existante sur le serveur d'applications
  • Une vue sur un serveur distant spécifié à l'aide d'un nom d'objet distant
  • nom-table d'une expression de table commune
La table de résultats intermédiaire est le résultat de la vue ou de l'expression de table commune. Si view-name fait référence à une vue basée sur un type structuré, la table de résultats intermédiaire est UNION ALL de la vue avec toutes ses sous-vues, avec uniquement les colonnes de view-name. Une spécification de période peut être utilisée avec une vue définie sur une table temporelle pour spécifier la période à partir de laquelle les lignes sont renvoyées en tant que table de résultats intermédiaire.
Si le registre spécial CURRENT TEMPORAL SYSTEM_TIME est défini sur une valeur non nulle CTSTet que view-name identifie une table temporelle de période système, la référence de table est exécutée comme si elle contenait la spécification suivante avec le registre spécial défini sur la valeur null:
  • view-name FOR SYSTEM_TIME AS OF CTST
Si le registre spécial CURRENT TEMPORAL BUSINESS_TIME est défini sur une valeur non nulle TICEet que view-name identifie une table temporelle de période d'application, la référence de table est exécutée comme si elle contenait la spécification suivante avec le registre spécial défini sur la valeur null:
  • view-name FOR BUSINESS_TIME AS OF CTBT
référence-pseudonyme-unique

Chaque pseudonyme spécifié en tant que référence de table doit identifier un pseudonyme existant sur le serveur d'applications. La table de résultats intermédiaire est le résultat de l'alias.

uniquement-table-reference

L'utilisation de ONLY (nom-table) ou ONLY (nom-vue) signifie que les lignes des sous-tables ou sous-vues applicables ne sont pas incluses dans la table de résultats intermédiaire. Si le nom-table utilisé avec ONLY n'a pas de sous-tables, ONLY (nom-table) équivaut à spécifier nom-table. Si le nom-vue utilisé avec ONLY n'a pas de sous-vues, ONLY (nom-vue) équivaut à spécifier nom-vue.

L'utilisation de ONLY requiert le privilège SELECT sur chaque sous-table de nom-table ou sous-vue de nom-vue.

référence-table-externe

L'utilisation de OUTER (nom-table) ou OUTER (nom-vue) représente une table virtuelle. Si le nom-table ou nom-vue utilisé avec OUTER ne comporte pas de sous-tables ou de sous-vues, la spécification d'OUTER équivaut à la non-spécification d'OUTER. Si nom-table comporte des sous-tables, la table de résultats intermédiaire de OUTER (nom-table) est dérivée de nom-table comme suit:

  • Les colonnes incluent les colonnes de nom-table , suivies des colonnes supplémentaires introduites par chacune de ses sous-tables, le cas échéant. Les colonnes supplémentaires sont ajoutées à droite, parcourant la hiérarchie de sous-tables dans l'ordre de priorité en profondeur. Les sous-tables qui ont un parent commun sont traversées dans l'ordre de création de leurs types.
  • Les lignes incluent toutes les lignes de nom-table et toutes les lignes de ses sous-tables. Les valeurs NULL sont renvoyées pour les colonnes qui ne figurent pas dans la sous-table de la ligne.

Si view-name comporte des sous-vues, la table de résultats intermédiaire de OUTER (view-name) est dérivée de view-name comme suit:

  • Les colonnes incluent les colonnes de view-name , suivies des colonnes supplémentaires introduites par chacune de ses sous-vues, le cas échéant. Les colonnes supplémentaires sont ajoutées à droite, parcourant la hiérarchie de sous-vue dans l'ordre en profondeur. Les sous-vues qui ont un parent commun sont traversées dans l'ordre de création de leurs types.
  • Les lignes incluent toutes les lignes de view-name et toutes les lignes de ses sous-vues. Les valeurs null sont renvoyées pour les colonnes qui ne se trouvent pas dans la sous-vue de la ligne.

L'utilisation d'OUTER requiert le privilège SELECT sur chaque sous-table de nom-table ou sous-vue de nom-vue.

expression_table_analyse
nom-table | nom-vue
La variable nom-table ou nom-vue doit identifier une table ou une vue existante ou identifier le nom-table d'une expression de table commune que vous définissez avant l'instruction FULLSELECT contenant la référence de table. Vous pouvez spécifier un alias. Toutefois, les analyses de base de données sont destinées aux données locales et l'extraction des données d'un pseudonyme à partir d'une autre source de données ne tire pas parti des avantages de performances prévus.
TABLE D'ANALYSE
Renvoie le résultat de l'exécution d'un modèle d'exploration de données spécifique à l'aide d'un fournisseur d'analyse de base de données, d'une implémentation de modèle nommé et de données d'entrée. Une requête faisant référence au paramètre ANALYZE_TABLE ne peut pas être une instruction SQL statique ou une instruction DDL (Data Definition Language). Les valeurs d'entrée ou de sortie ne peuvent pas être des types suivants:
  • CHAR FOR BIT DATA ou VARCHAR FOR BIT DATA
  • BINARY ou VARBINARY
  • BLOB, CLOB, DBCLOB ou NCLOB
  • BOOLEAN
  • langage XML
  • DB2SECURITYLABEL
MISE EN OEUVRE 'chaîne'
Indique comment l'expression doit être évaluée. Le paramètre string est une constante de type chaîne dont la longueur maximale est de 1024 octets. La valeur spécifiée est utilisée pour établir une session avec un fournisseur d'analyse de base de données. Lorsque vous spécifiez SAS comme fournisseur, vous devez spécifier des valeurs pour les paramètres insensibles à la casse suivants:
PROVIDER
Actuellement, la seule valeur de fournisseur prise en charge est SAS.
TABLE_SOURCE_ROUTINE
Indique une table utilisateur contenant le code DS2 (et éventuellement tout format ou métadonnées requis) pour implémenter l'algorithme spécifié par le paramètre ROUTINE_SOURCE_NAME. DS2 est un processeur de langage procédural pour SAS, conçu pour la modélisation des données, les procédures mémorisées et le traitement de l'extraction, de la transformation et de la charge des données (ETL).

La table source de la routine possède une structure définie (voir les exemples à la fin de la section analyze_table-expression ) et, dans un environnement de base de données partitionnée, doit se trouver sur la partition de base de données de catalogue. La table ne peut pas être une table temporaire globale. La colonne MODELDS2 d'une ligne particulière ne doit pas être vide ni contenir la valeur null. Si la valeur de la colonne MODELFORMATS ou MODELMETADATA n'est pas nulle, la longueur de la valeur doit être supérieure à 0. Si vous ne spécifiez pas de nom de schéma de table, la valeur du registre spécial CURRENT SCHEMA est utilisée.

NOM_SOURCE_ROUTINE
Indique le nom de l'algorithme à utiliser.
Exemple :
IMPLEMENTATION
  'PROVIDER=SAS;
  ROUTINE_SOURCE_TABLE=ETLIN.SOURCE_TABLE;
  ROUTINE_SOURCE_NAME=SCORING_FUN1;'
Si le nom de table, le nom de schéma ou le nom d'algorithme contient des minuscules ou des majuscules, indiquez des identificateurs délimités, comme dans l'exemple suivant:
IMPLEMENTATION
  'PROVIDER=SAS;
  ROUTINE_SOURCE_TABLE="ETLin"."Source_Table";
  ROUTINE_SOURCE_NAME="Scoring_Fun1";'

Les exemples suivants montrent comment utiliser l'expression ANALYZE_TABLE.

Les outils SAS vous aident à définir une table pour stocker les implémentations de modèle pour les fonctions de scoring. Une ligne de cette table stocke un algorithme écrit dans DS2, avec les informations et métadonnées de format SAS requises. La colonne MODELNAME sert de clé primaire. Pour une valeur particulière du paramètre ROUTINE_SOURCE_NAME, au maximum une ligne est extraite de la table spécifiée par le paramètre ROUTINE_SOURCE_TABLE. Exemple :
   CREATE TABLE ETLIN.SOURCE_TABLE (
     MODELNAME VARCHAR(128) NOT NULL PRIMARY KEY,
     MODELDS2 BLOB(4M) NOT NULL,
     MODELFORMATS BLOB(4M),
     MODELMETADATA BLOB(4M)
   );
La colonne MODELNAME contient le nom de l'algorithme. La colonne MODELDS2 contient le code source DS2 qui implémente l'algorithme. La colonne MODELFORMATS contient la définition de format SAS agrégée requise par l'algorithme. Si l'algorithme ne requiert pas de format SAS, cette colonne contient la valeur null. La colonne MODELMETADATA contient toutes les métadonnées supplémentaires requises par l'algorithme. Si l'algorithme ne requiert pas de métadonnées supplémentaires, cette colonne contient la valeur null. Si le programme d'installation SAS EP crée la table, il peut inclure des colonnes supplémentaires.
  • Utilisez les données des colonnes C1 et C2 de la table T1 comme données d'entrée avec le modèle de scoring SCORING_FUN1, dont l'implémentation est stockée dans ETLIN.SOURCE_TABLE:
       WITH sas_score_in (c1,c2) AS
         (SELECT c1,c2 FROM t1)
         SELECT *
           FROM sas_score_in ANALYZE_TABLE(
             IMPLEMENTATION
               'PROVIDER=SAS;
                ROUTINE_SOURCE_TABLE=ETLIN.SOURCE_TABLE;
                ROUTINE_SOURCE_NAME=SCORING_FUN1;');
  • Utilisez toutes les données de la table T2 avec le modèle de scoring SCORING_FUN2, dont l'implémentation est stockée dans ETLIN.SOURCE_TABLE:
       SELECT *
         FROM t2 ANALYZE_TABLE(
           IMPLEMENTATION
             'PROVIDER=SAS;
              ROUTINE_SOURCE_TABLE=ETLIN.SOURCE_TABLE;
              ROUTINE_SOURCE_NAME=SCORING_FUN2;');
  • Utilisez toutes les données de la vue V1 avec le modèle de scoring SCORING_FUN3, dont l'implémentation est stockée dans ETLIN.SOURCE_TABLE, et renvoyez la sortie dans l'ordre croissant de la première colonne de sortie:
       SELECT *
         FROM v1 ANALYZE_TABLE(
           IMPLEMENTATION
             'PROVIDER=SAS;
              ROUTINE_SOURCE_TABLE=ETLIN.SOURCE_TABLE;
              ROUTINE_SOURCE_NAME=SCORING_FUN3;')
         ORDER BY 1;
expression-table-imbriquée

Une instruction FULLSELECT entre parenthèses est appelée expression de table imbriquée. La table de résultats intermédiaire est le résultat de cette instruction FULLSELECT. Les colonnes du résultat n'ont pas besoin de noms uniques, mais une colonne avec un nom non unique ne peut pas être explicitement référencée. Si LATERAL est spécifié, l'instruction FULLSELECT peut inclure des références corrélées à des colonnes de résultats de références de table spécifiées à gauche de l'expression de table imbriquée. Si l'expression de table imbriquée implique des données d'une source de données fédérée, un gestionnaire de poursuite peut être spécifié pour tolérer certaines conditions d'erreur de la source de données.

Une expression dans la liste de sélection d'une expression de table imbriquée qui est référencée dans ou qui est la cible d'une instruction de modification de données dans une instruction FULLSELECT est valide uniquement lorsqu'elle n'inclut pas:
  • une fonction qui lit ou modifie les données SQL ;
  • Fonction non déterministe
  • Une fonction qui a une action externe
  • une fonction OLAP ;
Si une vue est référencée directement dans, ou comme cible d'une expression de table imbriquée dans une instruction de modification de données dans une clause FROM, la vue doit répondre à l'une des conditions suivantes:
  • Doit être symétrique (spécifiez WITH CHECK OPTION)
  • Satisfaire la restriction pour une vue WITH CHECK OPTION
Si la cible d'une instruction de modification de données dans une clause FROM est une expression de table imbriquée, les restrictions suivantes s'appliquent:
  • Les lignes modifiées ne sont pas requalifiées
  • Les prédicats de la clause WHERE ne sont pas réévalués
  • Les opérations ORDER BY ou FETCH FIRST ne sont pas rétablies
Une expression de table imbriquée peut être utilisée dans les situations suivantes:
  • A la place d'une vue pour éviter la création de la vue (lorsque l'utilisation générale de la vue n'est pas requise)
  • Lorsque la table de résultats intermédiaire requise est basée sur des variables hôte
référence-table-modification-données

Une clause data-change-table-reference spécifie une table de résultats intermédiaire. Cette table est basée sur les lignes qui sont directement modifiées par l'instruction UPDATE, DELETE ou INSERT recherchée qui est incluse dans la clause. Une data-change-table-reference peut être spécifiée comme seule table-reference dans la clause FROM de l'instruction FULLSELECT externe utilisée dans une instruction SELECT, une instruction SELECT INTO ou une expression de table commune. Une référence de table de modification de données peut être spécifiée comme seule référence de table dans la seule instruction FULLSELECT d'une instruction SET Variable (SQLSTATE 428FL). La table ou la vue cible de l'instruction de modification des données est considérée comme étant une table ou une vue référencée dans la requête ; par conséquent, l'ID d'autorisation de la requête doit disposer du privilège SELECT sur cette table ou cette vue cible. Une clause data-change-table-reference ne peut pas être spécifiée dans une définition de vue, une définition de table de requêtes matérialisée ou une instruction FOR (SQLSTATE 428FL).

La cible de l'instruction UPDATE, DELETE ou INSERT ne peut pas être une vue temporaire définie dans une expression de table commune (SQLSTATE 42807) ou un pseudonyme (SQLSTATE 25000).

Les expressions de la liste de sélection d'une vue ou d'une instruction FULLSELECT comme cible d'une instruction de modification de données dans une référence de table ne peuvent être sélectionnées que si OLD TABLE est spécifiée ou que l'expression n'inclut pas les éléments suivants (SQLSTATE 428G6):
  • une sous-requête ;
  • une fonction qui lit ou modifie les données SQL ;
  • Une fonction est non déterministe ou possède une action externe
  • une fonction OLAP ;
  • Référence NEXT VALUE FOR sequence
TABLE FINALE
Indique que les lignes de la table de résultats intermédiaire représentent l'ensemble de lignes qui sont modifiées par l'instruction de modification de données SQL telle qu'elles existent à la fin de l'instruction de modification de données. Si des déclencheurs AFTER ou des contraintes référentielles entraînent d'autres opérations sur la table qui est la cible de l'instruction de modification de données SQL, une erreur est renvoyée (SQLSTATE 560C6). Si la cible de l'instruction de modification de données SQL est une vue définie avec un déclencheur INSTEAD OF pour le type de modification de données, une erreur est renvoyée (SQLSTATE 428G3).
Nouvelle table
Indique que les lignes de la table de résultats intermédiaire représentent l'ensemble de lignes qui sont modifiées par l'instruction de modification de données SQL avant l'application de contraintes référentielles et de déclencheurs AFTER. Les données de la table cible à la fin de l'instruction peuvent ne pas correspondre aux données de la table de résultats intermédiaire en raison d'un traitement supplémentaire pour les contraintes référentielles et les déclencheurs AFTER.
Ancienne table
Indique que les lignes de la table de résultats intermédiaire représentent l'ensemble de lignes qui sont modifiées par l'instruction de modification de données SQL telle qu'elles existaient avant l'application de l'instruction de modification de données.
(instruction-mise-à-jour-recherchée)
Indique une instruction UPDATE recherchée. Une clause WHERE ou SET de l'instruction UPDATE ne peut pas contenir de références corrélées à des colonnes en dehors de l'instruction UPDATE.
(instruction-delete-recherchée)
Indique une instruction DELETE recherchée. Une clause WHERE de l'instruction DELETE ne peut pas contenir de références corrélées à des colonnes en dehors de l'instruction DELETE.
(instruction d'insertion)
Indique une instruction INSERT. Une instruction FULLSELECT de l'instruction INSERT ne peut pas contenir de références corrélées à des colonnes en dehors de l'instruction FULLSELECT de l'instruction INSERT.

Le contenu de la table de résultats intermédiaire pour une data-change-table-reference est déterminé lorsque le curseur s'ouvre. La table de résultats intermédiaire contient toutes les lignes manipulées, y compris toutes les colonnes de la table ou de la vue cible spécifiée. Toutes les colonnes de la table ou de la vue cible d'une instruction de modification de données SQL sont accessibles à l'aide des noms de colonne de la table ou de la vue cible. Si une clause INCLUDE a été spécifiée dans une instruction de modification de données, la table de résultats intermédiaire contiendra ces colonnes supplémentaires.

référence-fonction-table
En général, une fonction de table, avec ses valeurs d'argument, peut être référencée dans la clause FROM d'une instruction SELECT exactement de la même manière qu'une table ou une vue. Chaque function-name ainsi que les types de ses arguments, spécifiés en tant que référence de table, doivent être résolus en une fonction de table existante sur le serveur d'applications. Toutefois, certaines considérations particulières s'appliquent.
  • Noms de colonne de fonction de table: sauf si des noms de colonne alternatifs sont fournis après le nom-corrélation, les noms de colonne de la fonction de table sont ceux spécifiés dans la clause RETURNS ou RETURNS GENERIC TABLE de l'instruction CREATE FUNCTION. Cela est analogue aux noms des colonnes d'une table, qui sont définies dans l'instruction CREATE TABLE.
  • Résolution de fonction de table: les arguments spécifiés dans une référence de fonction de table, ainsi que le nom de la fonction, sont utilisés par un algorithme appelé résolution de fonction pour déterminer la fonction exacte à utiliser. Ce n'est pas différent de ce qui se passe avec d'autres fonctions (telles que les fonctions scalaires) qui sont utilisées dans une instruction.
  • Arguments de la fonction de table: Comme pour les arguments de la fonction scalaire, les arguments de la fonction de table peuvent généralement être n'importe quelle expression SQL valide. Les exemples de syntaxe valides sont les suivants:
      Example 1:  SELECT c1
                  FROM TABLE( tf1('Zachary') ) AS z
                  WHERE c2 = 'FLORIDA';
    
      Example 2:  SELECT c1
                  FROM TABLE( tf2 (:hostvar1, CURRENT DATE) ) AS z;
    
      Example 3:  SELECT c1
                  FROM t
                  WHERE c2 IN
                           (SELECT c3 FROM
                            TABLE( tf5(t.c4) ) AS z  -- correlated reference
                           )                         -- to previous FROM clause
      Example 4:  SELECT c1
                  FROM TABLE( tf6('abcd') )                -- tf6 is a generic
                      AS z (c1 int, c2 varchar(100)) -- java table function
  • Fonctions de table qui modifient les données SQL: les fonctions de table qui sont spécifiées avec l'option MODIFIES SQL DATA ne peuvent être utilisées que comme dernière référence de table dans une select-statement, common-table-expressionou une instruction RETURN qui est une sous-requête, une SELECT INTO ou une row-fullselect dans une instruction SET. Une seule fonction de table est autorisée dans une clause FROM et les arguments de la fonction de table doivent être corrélés à toutes les autres références de table dans la sous-requête (SQLSTATE 429BL). Les exemples suivants présentent une syntaxe valide pour une fonction de table avec la propriété MODIFIES SQL DATA:
      Example 1:  SELECT c1
                  FROM TABLE( tfmod('Jones') ) AS z
    
      Example 2:  SELECT c1
                  FROM t1, t2, TABLE( tfmod(t1.c1, t2.c1) ) AS z
    
      Example 3:  SET var =
                  (SELECT c1
                  FROM TABLE( tfmod('Jones') ) AS z
    
      Example 4:  RETURN SELECT c1
                  FROM TABLE( tfmod('Jones') ) AS z
    
      Example 5:  WITH v1(c1) AS
                  (SELECT c1
                  FROM TABLE( tfmod(:hostvar1) ) AS z)
                  SELECT c1 
                  FROM v1, t1 WHERE v1.c1 = t1.c1
      Example 6: SELECT z.* 
                 FROM t1, t2, TABLE( tfmod(t1.c1, t2.c1) ) 
                 AS z (col1 int)
table-dérivée-collection

Une table dérivée d'une collection peut être utilisée pour convertir les éléments d'un tableau en valeurs d'une colonne dans des lignes distinctes. Si WITH ORDINALITY est spécifié, une colonne supplémentaire de type de données INTEGER est ajoutée. Cette colonne contient la position de l'élément dans le tableau. Les colonnes peuvent être référencées dans la liste de sélection et dans le reste de la sous-requête en utilisant les noms spécifiés pour les colonnes dans la clause de corrélation. La clause collection-dérivée-table ne peut être utilisée que dans un contexte où les tableaux sont pris en charge (SQLSTATE 42887). Pour plus de détails, voir la "fonction de table UNNEST".

expression-xmltable
Une expression xmltable-expression spécifie un appel de la fonction XMLTABLE intégrée qui détermine la table de résultats intermédiaire. Voir XMLTABLE pour plus d'informations.
référence-table-externe
Une table externe réside dans un fichier texte ou non délimité en dehors d'une base de données. Une référence-table-externe spécifie le nom du fichier qui contient une table externe.
Important: Une référence de table externe transitoire ne peut pas être spécifiée dans une définition de vue (SQLSTATE 428IE).
column-definition
Attributs d'une colonne.
nom-colonne
Nomme une colonne de la table. Le nom ne peut pas être qualifié et le même nom ne peut pas être utilisé pour plusieurs colonnes de la table (SQLSTATE 42711).
built-in-type
L'un des types de données intégrés suivants :
SMALLINT
Un petit nombre entier.
[ENTIER | INT]
Un grand nombre entier.
BIGINT
Un très grand nombre entier.
[ DECIMAL | DEC | NUMERIC | NUM ] (entier-précision, entier-échelle)
Un nombre décimal.
  • L'entier de précision indique le nombre total de chiffres. Il doit être comprise entre 1 et 31. La valeur par défaut est 5.
  • L'entier d'échelle indique le nombre de chiffres à droite du séparateur décimal. Il ne peut pas être négatif et ne peut pas dépasser la précision. La valeur par défaut est 0.
FLOAT(integer)
Un nombre à virgule flottante simple ou double précision. Si la longueur spécifiée est dans la plage :
  • 1 - 24, le nombre utilise une seule précision
  • 25 - 53, le nombre utilise une double précision
Au lieu de FLOAT, vous pouvez spécifier :
REAL
Pour un point flottant de précision unique.
DOUBLE
Pour une virgule flottante double précision.
DOUBLE PRECISION
Pour une virgule flottante double précision.
FLOAT
Pour une virgule flottante double précision.
DECFLOAT(precision-integer)
Un nombre décimal en virgule flottante. L'entier de précision indique le nombre total de chiffres, qui peuvent être 16 ou 34. La valeur par défaut est 34.
[CHARACTER | CHAR](integer [OCTETS | CODEUNITS32])
Chaîne de caractères de longueur fixe du nombre spécifié d'unités de code. Ce nombre peut aller de 1 à 255 OCTETS ou de 1 à 63 CODEUNITS32. Par défaut, il s'agit de 1.
[VARCHAR | CHARACTER VARYING | CHAR VARYING](integer [OCTETS | CODEUNITS32])
Chaîne de caractères de longueur variable avec une longueur maximale du nombre spécifié d'unités de code. Ce nombre peut aller de 1 à 32 672 OCTETS ou de 1 à 8 168 CODEUNITS32.
Pour données binaires
Indique que le contenu de la colonne doit être traité comme des données binaires. Lors de l'échange de données avec d'autres systèmes, les conversions de pages de codes ne sont pas effectuées. Les comparaisons sont effectuées en binaire, indépendamment de la séquence de classement de la base de données.
La clause FOR BIT DATA ne peut pas être spécifiée avec les unités de chaîne CODEUNITS32 (SQLSTATE 42613).
[ CLOB | CHARACTER LARGE OBJECT | CHAR LARGE OBJECT ] (entier [ K ] [ OCTETS | CODEUNITS32])
Chaîne CLOB (character large object) avec une longueur maximale du nombre spécifié d'unités de code. La longueur maximale par défaut est de 65 535 octets.
Si vous souhaitez multiplier l'entier de longueur par 1024, spécifiez un K (kilo) multiplicateur.
  • Que vous utilisiez un multiplicateur K , la longueur résultante est limitée par la longueur maximale d'une colonne CLOB dans une table externe, qui est de 65 535 OCTETS, 32 767 CODEUNITS16ou 16 383 CODEUNITS32. Notez que 64K OCTETS et 16K CODEUNITS32 dépassent chacun la longueur maximale de un, ce qui n'est pas autorisé.
  • Tout nombre d'espaces (y compris les espaces nuls) est autorisé entre le type de données et la spécification de longueur ou entre l'entier de longueur et le multiplicateur K . Par exemple, les spécifications suivantes sont toutes équivalentes et valides :
    CLOB(50K)
    CLOB(50 K)
    CLOB (50   K)
  • Le multiplicateur K peut être spécifié en majuscules ou en minuscules.

Dans une base de données Unicode, les unités de chaîne par défaut pour un type de données de chaîne de caractères sont déterminées par la valeur de la variable globale NLS_STRING_UNITS ou du paramètre de configuration de base de données string_units. Dans une base de données non-Unicode, les unités de chaîne par défaut pour les types de données de type chaîne de caractères sont OCTETS.

OCTETS
Indique que les unités de l'attribut length sont des octets.
CODEUNITS32
Indique que les unités de l'attribut length sont des unités de code Unicode UTF-32, ce qui correspond à un comptage approximatif en caractères. Cela n'affecte pas la page de codes sous-jacente du type de données. La longueur réelle d'une valeur de données est déterminée en comptant les unités de code UTF-32 comme si les données ont été converties en UTF-32. CODEUNITS32 ne peut être spécifié que dans une base de données Unicode (SQLSTATE 560AA).
GRAPHIC(integer [CODEUNITS16 | CODEUNITS32])
Chaîne graphique de longueur fixe de la longueur spécifiée, qui peut aller de 1 à 127 doubles octets, 1-127 CODEUNITS16 ou 1-63 CODEUNITS32. La longueur par défaut est 1.
VARGRAPHIC(integer [CODEUNITS16 | CODEUNITS32])
Chaîne graphique de longueur variable de la longueur maximale spécifiée, qui peut aller de 1 à 16336 octets doubles, 1 - 16336 CODEUNITS16ou 1 - 8168 CODEUNITS32.
DBCLOB (entier [ K ] [CODEUNITS16 | CODEUNITS32])
Une chaîne d'objets de grande taille de la longueur maximale spécifiée en octets doubles, unités de code Unicode UTF-16 ou unités de code Unicode UTF-32. La longueur maximale par défaut est de 32 767 octets.
Si vous souhaitez multiplier l'entier de longueur par 1024, spécifiez un K (kilo) multiplicateur.
  • Que vous utilisiez un multiplicateur K , la longueur résultante est limitée par la longueur maximale d'une colonne DBCLOB dans une table externe, qui est de 32 767 CODEUNITS16 ou de 16 383 CODEUNITS32. Notez que 32K CODEUNITS16 et 16K CODEUNITS32 dépassent chacun la longueur maximalede un, ce qui n'est pas autorisé.
  • Tout nombre d'espaces (y compris les espaces nuls) est autorisé entre le type de données et la spécification de longueur ou entre l'entier de longueur et le multiplicateur K . Par exemple, les spécifications suivantes sont toutes équivalentes et valides :
    DBCLOB(50K)
    DBCLOB(50 K)
    DBCLOB (50   K)
  • Le multiplicateur K peut être spécifié en majuscules ou en minuscules.

Dans une base de données Unicode, les unités de chaîne par défaut pour un type de données de chaîne de caractères sont déterminées par la valeur de la variable globale NLS_STRING_UNITS ou du paramètre de configuration de base de données string_units. Dans une base de données non Unicode, les unités de chaîne par défaut pour les types de données de type chaîne de caractères sont CODEUNITS16.

CODEUNITS16
Indique que les unités de l'attribut length sont des unités de code Unicode UTF-16, ce qui revient à compter en doubles octets. CODEUNITS16 ne peut être spécifié que dans une base de données Unicode (SQLSTATE 560AA).
CODEUNITS32
Indique que les unités de l'attribut length sont des unités de code Unicode UTF-32. Cela n'affecte pas la page de codes sous-jacente du type de données. La longueur réelle d'une valeur de données est déterminée en comptant les unités de code UTF-32 comme si les données ont été converties en UTF-32. CODEUNITS32 ne peut être spécifié que dans une base de données Unicode (SQLSTATE 560AA).
[NATIONAL CHARACTER | NATIONAL CHAR | NCHAR](integer)
Chaîne de longueur fixe de la longueur spécifiée. La longueur par défaut est 1.

Le type CHARACTER NATIONAL est mappé à un caractère de longueur fixe ou à une chaîne graphique de longueur fixe, en fonction de la valeur du paramètre de configuration de base de données nchar_mapping, qui définit également les unités de chaîne.

[NATIONAL CHARACTER VARYING | NATIONAL CHAR VARYING | NCHAR VARYING | NVARCHAR](integer)
Chaîne de longueur variable de la longueur maximale spécifiée.

Le type NATIONAL CHARACTER VARYING est mappé à un caractère de longueur variable ou à une chaîne graphique de longueur variable, en fonction de la valeur du paramètre de configuration de base de données nchar_mapping, qui définit également les unités de chaîne.

[ NATIONAL CHARACTER LARGE OBJECT | NCHAR LARGE OBJECT | NCLOB ] (entier [ K ])
Une chaîne d'objet LOB de la longueur maximale spécifiée. La longueur maximale par défaut est de 16 383 octets doubles.

Ce type de données est mappé à un objet CLOB (character large object ) ou à un objet LOB à deux octets (DBCLOB), en fonction de la valeur actuelle du paramètre de configuration de base de données nchar_mapping, qui définit également les unités de chaîne. Voir la description du paramètre CLOB ou DBCLOB (selon le cas) pour plus d'informations sur les valeurs possibles pour l'entier de longueur et pour savoir comment utiliser un multiplicateur K (kilo).

BINARY(integer)
Chaîne binaire de longueur fixe de la longueur spécifiée, qui doit être de 1 à 255 octets. La longueur par défaut est 1.
[VARBINARY | BINARY VARYING](integer)
Chaîne binaire de longueur variable de la longueur maximale spécifiée, qui doit être de 1 à 32 672 octets.
[ BLOB | BINARY LARGE OBJECT ] (entier [ K ])
Chaîne d'objet binaire binaire avec une longueur maximale du nombre spécifié d'unités de code. La longueur maximale par défaut est de 65 535 octets.
Si vous souhaitez multiplier l'entier de longueur par 1024, spécifiez un K (kilo) multiplicateur.
  • Que vous utilisiez ou non un multiplicateur K , la longueur résultante est limitée par la longueur maximale d'une colonne BLOB dans une table externe, qui est de 65 535 octets. Notez que 64K dépasse la longueur maximale de un, ce qui n'est pas autorisé.
  • Tout nombre d'espaces (y compris les espaces nuls) est autorisé entre le type de données et la spécification de longueur ou entre l'entier de longueur et le multiplicateur K . Par exemple, les spécifications suivantes sont toutes équivalentes et valides :
    BLOB(50K)
    BLOB(50 K)
    BLOB (50   K)
  • Le multiplicateur K peut être spécifié en majuscules ou en minuscules.
DATE
Une date.
PÉRIODE
Un heure.
TIMESTAMP (Entier) ou TIMESTAMP
Horodatage. L'entier indique le nombre de décimales pour les fractions de secondes, de 0 (secondes) à 12 (picosecondes). La valeur par défaut est 6 (microsecondes).
BOOLEAN
Valeur booléenne.
LIKE table-name1, view-name ou nickname
Indique que les colonnes de la table ont le même nom et la même description que les colonnes de la table spécifiée (table-name1), de la vue (name-view) ou de l'alias (nickname). La table, la vue ou le pseudonyme spécifié doit exister dans le catalogue ou être une table temporaire déclarée. Une table ou une vue basée sur un type structuré ne peut pas être spécifiée (SQLSTATE 428EC).
L'utilisation de LIKE est une définition implicite des colonnes N, où N est le nombre de colonnes dans la table (y compris les colonnes masquées implicitement), la vue ou le pseudonyme de la table identifiée. Une colonne de la nouvelle table qui correspond à une colonne implicitement masquée dans la table existante sera également définie comme masquée implicitement. La définition implicite dépend de ce qui est spécifié après LIKE:
  • Si une table est spécifiée, la définition implicite inclut le nom de la colonne, le type de données, l'attribut masqué et la caractéristique de valeur NULL de chacune des colonnes de cette table. Si la valeur EXCLUDING COLUMN DEFAULTS n'est pas spécifiée, la valeur par défaut de la colonne est également incluse.
  • Si une vue est spécifiée, la définition implicite inclut le nom de colonne, le type de données et la caractéristique de valeur NULL de chacune des colonnes de résultat de l'instruction FULLSELECT définie dans cette vue. Les types de données des colonnes de vue doivent être des types de données valides pour les colonnes d'une table.
  • Si un pseudonyme est spécifié, la définition implicite inclut le nom de colonne, le type de données et la caractéristique de valeur NULL de chaque colonne de ce pseudonyme.
  • Si une table protégée est spécifiée, la nouvelle table hérite des mêmes règles de sécurité et colonnes protégées que la table identifiée.
  • Si une table est spécifiée et si cette table contient une colonne de début de ligne, une colonne de fin de ligne ou une colonne ID-début de transaction, la colonne correspondante de la nouvelle table hérite uniquement du type de données de la colonne source. La nouvelle colonne n'est pas considérée comme une colonne générée.
  • Si une table incluant une période est spécifiée, la nouvelle table n'hérite pas de la définition de période.
  • Si une table temporelle de période système est spécifiée, la nouvelle table n'est pas une table temporelle de période système.
  • Si une table de distribution aléatoire qui utilise la méthode génération aléatoire est spécifiée, et si la nouvelle table en cours de création ne partage pas la même distribution de table, la colonne RANDOM_DISTRIBUTION_KEY utilisée pour générer les valeurs de distribution aléatoires n'est pas incluse.

Les attributs de colonne par défaut et de colonne d'identité peuvent être inclus ou exclus en fonction des clauses relatives aux attributs de copie. La définition implicite n'inclut aucun autre attribut de la table, de la vue ou du pseudonyme identifié. Par conséquent, la nouvelle table ne possède pas de clé primaire, de contraintes uniques, de contraintes de clé externe, de contraintes d'intégrité référentielle, de déclencheurs, d'index, de spécifications ORGANIZE ou de spécification PARTITIONING KEY. La table est créée dans l'espace table implicitement ou explicitement spécifiée par la clause IN, et la table n'a d'autre clause facultative que si la clause facultative est spécifiée.

Lorsqu'une table est identifiée dans la clause LIKE et que cette table contient une colonne ROW CHANGE TIMESTAMP, la colonne correspondante de la nouvelle table hérite uniquement du type de données de la colonne ROW CHANGE TIMESTAMP. La nouvelle colonne n'est pas considérée comme une colonne générée.

Si une table est spécifiée et si le contrôle d'accès au niveau de ligne ou de colonne est activé pour cette table, il n'est pas hérité par la nouvelle table.

Option
Les options suivantes contrôlent le chargement des données vers ou l'extraction de données à partir d'un fichier de table externe. La valeur de chaque option est une chaîne de texte et n'est pas sensible à la casse.
BINARYNUMERICS
Indique que les données numériques sont entrées au format binaire par opposition à la représentation des caractères ASCII. N'affecte pas les autres données non numériques. Pris en charge uniquement avec des données de format à longueur fixe au format texte.
TRUE ou ON

Les données numériques (à l'exception du type DECIMAL) doivent être entrées au format binaire.

Les types numériques pris en charge sont SMALLINT, INT, BIGINT, REAL et DOUBLE. Aucune conversion entre les types de données n'est effectuée, à l'exception des conversions effectuées entre les types entiers (SMALLINT, INT et BIGINT).

Les longueurs de données doivent correspondre à leurs définitions de colonne cible (à l'exception des conversions d'entiers ; par exemple, 2, 4 et 8 octets sont toutes des longueurs de zone valides pour une colonne BIGINT).

Toutes les entrées numériques du fichier de données sont supposées être de type big endian, quelle que soit la plateforme sur laquelle s'exécute l'opération de chargement.

Les valeurs REAL et DOUBLE doivent être au format IEEE Floating Point.

FALSE ou OFF
Les données numériques doivent être saisies dans une représentation de caractères ASCII standard.
BOOLSTYLE ou BOOLEAN_STYLE
Lors d'une opération de chargement, toutes les valeurs booléennes doivent utiliser le même style. Cette option indique le style booléen à utiliser:
  • 1_0 (valeur par défaut)
  • T_F
  • Y_N
  • YES_NO
  • TRUE_FALSE
Cardinalité
Valeur entière positive différente de zéro pour remplacer l'estimation du nombre attendu de lignes renvoyées.
CCSID
Identificateur de jeu de caractères codés (CCSID) du fichier de données d'entrée. La valeur peut être n'importe quelle valeur entière valide à partir de la spécification CCSID. Il n'existe pas de valeur par défaut. Les options CCSID et ENCODING s'excluent mutuellement lorsque la valeur de l'option ENCODING est UTF8, LATIN9ou INTERNAL.
Les styles utilisés pour les dates et les heures varient selon qu'un CCSID est spécifié :
  • Lorsqu'un CCSID est spécifié et que DATESTYLE, TIMESTYLE, DATEDELIM ou TIMEDELIM ne le sont pas, les valeurs ou valeurs par défaut pour DATE_FORMAT, TIME_FORMAT et TIMESTAMP_FORMAT sont utilisées.
  • Lorsqu'un CCSID n'est pas spécifié et que TIMESTAMP_FORMAT, DATE_FORMAT ou TIME_FORMAT ne le sont pas, les valeurs ou valeurs par défaut de DATESTYLE, TIMESTYLE, DATEDELIM et TIMEDELIM sont utilisées.
COMPRESS
Pour une opération de chargement ou de déchargement, si les données du fichier de données sont compressées :
GZIP
Les données du fichier de données sont compressées à l'aide de l'algorithme de compression GZIP.
NO
Les données du fichier de données ne sont pas compressées. Il s'agit de la valeur par défaut.
LZ4
Les données du fichier de données sont compressées à l'aide de l'algorithme de compression LZ4.
L'option COMPRESS ne peut pas être spécifiée si la valeur de l'option REMOTESOURCE est GZIP ou LZ4.
CRINSTRING
Comment interpréter un retour chariot-retour (CR) ou un retour chariot-retour chariot (CRLF) :
TRUE ou ON
Un caractère CR non échappé est interprété comme des données, et non comme un délimiteur d'enregistrement.
FALSE ou OFF
Une ressource personnalisée non échappée est interprétée comme un délimiteur d'enregistrement. Il s'agit de la valeur par défaut.
Utilisez un format de longueur fixe pour CRINSTRING uniquement si la valeur de l'option CtrlChars est définie sur OFF.
CTRLCHARS
Indique s'il faut autoriser une valeur ASCII 1 - 31 dans une zone CHAR ou VARCHAR. Les caractères NULL, CR ou LF doivent être échappés. Les valeurs admises sont les suivantes :
TRUE ou ON
Une valeur ASCII 1 - 31 dans une zone CHAR ou VARCHAR est autorisée.
Si le format de longueur fixe est activé, tous les caractères non échappés sont autorisés.
FALSE ou OFF
Une valeur ASCII 1 - 31 dans une zone CHAR ou VARCHAR n'est pas autorisée. Il s'agit de la valeur par défaut.
Si le format de longueur fixe est activé, les caractères non échappés entraînent une erreur.
Exceptions pour format de longueur fixe :
  • \t, \n
  • \r si l'option CRinString a la valeur ON
DATAOBJECT ou FILE_NAME
Nom qualifié complet du fichier (ou tout support pouvant être traité comme un fichier) qui doit contenir la table externe à créer. Cette option est obligatoire lorsque le nom du fichier n'est pas indiqué immédiatement après le nom de la table ; dans le cas contraire, elle n'est pas autorisée.

Lorsque l'option REMOTESOURCE a la valeur LOCAL (sa valeur par défaut) et que le paramètre de configuration extbl_strict_io a la valeur NO, le chemin d'accès au fichier de table externe est un chemin d'accès absolu et doit être l'un des chemins spécifiés par le paramètre de configuration extbl_location . Sinon, le chemin d'accès au fichier de table externe est relatif au chemin spécifié par le paramètre de configuration extbl_location suivi de l'ID autorisation de la table définie. Par exemple, si extbl_location a la valeur /home/xyz et que l'ID autorisation de la définition de table est user1, le chemin d'accès au fichier de table externe est relatif à /home/xyz/user1/.

Le nom de fichier doit être une chaîne UTF-8 valide.
Pour une opération de chargement, les conditions suivantes s'appliquent :
  • Le fichier doit déjà exister.
  • Droits requis :
    • Si la table externe est une table externe nommée, le propriétaire doit disposer des droits d'accès en lecture pour le fichier et le droit d'accès en écriture pour le répertoire LOGDIR.
    • Si la table externe est une table externe transitoire, l'ID autorisation de l'instruction doit disposer des droits d'accès en lecture pour le fichier et le droit d'accès en écriture pour le répertoire LOGDIR.
Pour une opération de déchargement, les conditions suivantes s'appliquent :
  • Si le fichier existe, il est écrasé.
  • Droits requis :
    • Si la table externe est une table externe nommée, le propriétaire doit disposer des droits en lecture et en écriture pour le répertoire de ce fichier.
    • Si la table externe est transitoire, l'ID autorisation de l'instruction doit disposer des droits d'accès en lecture et en écriture pour le répertoire de ce fichier.
DATEDELIM
Caractère délimiteur qui sépare les composants d'une date, selon le format spécifié par l'option DATESTYLE. Si vous spécifiez une chaîne vide, il n'y a pas de délimiteur entre les composants de date, et les jours et les mois doivent être spécifiés sous la forme de nombres à deux chiffres. Lorsque DATESTYLE est défini sur MONDY ou MONDY2, la valeur par défaut DATEDELIM est un espace. Les options TIMESTAMP_FORMAT et DATEDELIM s'excluent mutuellement.
DATESTYLE
Comment interpréter le format de date. Pour les jours ou les mois de la plage 1 à 9, utilisez un chiffre, 2 chiffres ou un espace suivi d'un chiffre. Lorsque l'option DATEDELIM est un espace, vous pouvez spécifier une virgule après la journée. Une erreur se produit si vous :
  • Indiquez zéro pour un jour, un mois ou une année
  • Indication d'une date inexistante (par exemple, le 32 août ou le 30 février)
L'option DATESTYLE et DATE_FORMAT ou TIMESTAMP_FORMAT s'excluent mutuellement.
Tableau 1. Valeurs possibles pour l'option DateStyle. L'exemple montre comment la date du 21 mars 2014 serait représentée lorsque DATEDELIM a la valeur '-'.
Valeur Description Exemple
AMJ Année de quatre chiffres, mois de deux chiffres, jour de deux chiffres. Il s'agit de la valeur par défaut. 2014-03-21
JMA Jour de deux chiffres, mois de deux chiffres, année de quatre chiffres. 21-03-2014
MJA Mois de deux chiffres, jour de deux chiffres, année de quatre chiffres. 03-21-2014
MOIJA Mois de 3 caractères, jour de deux chiffres, année de quatre chiffres. Mar 21 2014
JMOIA Jour de deux chiffres, mois de 3 caractères, année de 4 chiffres. 21-Mar-2014
Y2MD Année de deux chiffres, mois de deux chiffres, jour de deux chiffres. Non pris en charge pour les déchargements. 14-03-21
DMY2 Jour de deux chiffres, mois de deux chiffres, année de deux chiffres. Non pris en charge pour les déchargements. 21-03-14
MDY2 Mois de deux chiffres, jour de deux chiffres, année de deux chiffres. Non pris en charge pour les déchargements. 03-21-14
MONDY2 Mois de 3 caractères, jour de deux chiffres, année de deux chiffres. Non pris en charge pour les déchargements. Mar 21 14
DMONY2 Jour de deux chiffres, mois de 3 caractères, année de deux chiffres. Non pris en charge pour les déchargements. 21-Mar-14
DATETIMEDELIM
Caractère mono-octet qui sépare le composant de date et le composant d'heure du type de données d'horodatage.
Le délimiteur par défaut est un espace (' ').
Entre le composant de date et le composant heure, aucun délimiteur n'est pas requis. Par exemple, les deux valeurs suivantes sont valides :
2010-10-10 10:10:10
2010-10-1010:10:10
DATE_FORMAT
Format de la zone de date dans le fichier de données. La valeur peut être l'une des chaînes de format de date acceptées par la fonction scalaire TIMESTAMP_FORMAT. La valeur par défaut est AAAA-MM-JJ. L'option DATE_FORMAT et l'option DATEDELIM ou DATESTYLE s'excluent mutuellement.
DECIMALDELIM ou DECIMAL_CHARACTER
Délimiteur décimal pour les types de données FLOAT, DOUBLE, TIME et TIMESTAMP. Les valeurs autorisées sont ',' et '.'.
ESPACE VIDE PLUS DEC
Indique comment la valeur décimale positive est représentée au cours de l'opération de déchargement.
Vous pouvez spécifier l'une des valeurs suivantes pour cette option :
NONE
Il s'agit de la valeur par défaut.
Cette valeur représente une valeur décimale positive sans signe.
PLUS
Indique qu'une valeur décimale positive est représentée par un signe '+'.
VIDE
Indique qu'une valeur décimale positive est représentée par un signe blanc au lieu d'un signe '+'.
Si vous spécifiez l'option DECPLUSBLANK pour l'opération de chargement, la sortie n'est pas affectée.
Exemples pour un test de table avec ddl (décimal (6, 2)) et toutes les valeurs disponibles pour l'option DECPLUSBLANK :
1234
-4563
  • Créez une table externe'/tmp/unload.txt' en utilisant (DECPLUSBLANK NONE) as select * from test :
    unload.txt
    1234.00
    -4563.00
  • Créez une table externe'/tmp/unload.txt' en utilisant (DECPLUSBLANK PLUS) as select * from test :
    unload.txt
    +1234.00
    -4563.00
  • Créez une table externe'/tmp/unload.txt' en utilisant DECPLUSBLANK BLANK) as select * from test :
    unload.txt
     1234.00
    -4563.00
DELIMITER ou COLUMN_DELIMITER
Caractère utilisé pour délimiter les zones d'un enregistrement d'entrée ou de sortie. La valeur par défaut est une barre verticale ('|').
Vous pouvez spécifier un caractère dans la plage ASCII 7 bits (décimal 1-127) de l'une des manières suivantes :
  • En tant que caractère unique (par exemple DELIMITER ';')
  • En spécifiant sa valeur décimale ASCII correspondante (par exemple, DELIMITER 59 ou DELIMITER '59')
  • En spécifiant sa valeur hexadécimale ASCII (par exemple, DELIMITER x'3B')

La plage décimale 128 - 255 est prise en charge uniquement avec le fichier d'entrée de jeu de caractères ISO en spécifiant sa valeur décimale ASCII ou sa valeur hexadécimale correspondante. Si le fichier d'entrée se trouve dans le jeu de caractères UTF8, cette plage de valeurs de délimiteur n'est pas prise en charge.

ENCODING
Type de données dans le fichier :
UTF8
Le fichier utilise le codage UTF8 pour toutes les données de type caractères.
LATIN9
Le fichier utilise le codage LATIN9 pour toutes les données de type caractères.
INTERNAL
Le fichier utilise une combinaison d'encodage UTF8 et LATIN9 ou vous ne savez pas quel type d'encodage est utilisé. Le système vérifie les données et code les données selon les besoins. Etant donné que cette vérification des données réduit les performances globales, n'utilisez cette valeur que si nécessaire. Il s'agit de la valeur par défaut.
INTERNAL
Il s'agit de l'option par défaut.
Le fichier utilise une combinaison d'encodage UTF8 et LATIN9.
Les fichiers sont codés au format interne Netezza et ne doivent donc être utilisés que pour les fichiers extraits de Netezza à l'aide d'ENCODING (INTERNAL).
Lorsque la colonne cible est CODEUINTS32 (NCHAR/VARCHAR), les données d'entrée sont validées comme des caractères UTF-8 valides.
Cette option n'est prise en charge que dans une base de données Unicode.
DBCS_GRAPHIC
Cette valeur est admise uniquement pour une opération de chargement et non pour une opération de déchargement. Si cette valeur est spécifiée, l'option CCSID doit également être spécifiée. Lors de l'opération de chargement, les zones de type GRAPHIC ou VARGRAPHIC sont codées à l'aide du jeu de caractères codé sur deux octets du CCSID indiqué ; les zones de tous les autres types sont codées à l'aide du jeu de caractères à octets mixtes du CCSID indiqué.
Remarque: ENCODING ne peut pas être défini sur DBCS_GRAPHIC pour un fichier DEL créé par l'utilitaire EXPORT, car ces fichiers DEL sont codés à l'aide d'un jeu de caractères unique.
Les options CCSID et ENCODING s'excluent mutuellement lorsque la valeur de l'option ENCODING est UTF8, LATIN9ou INTERNAL.
ESCAPECHAR ou ESCAPE_CHARACTER
Quel caractère doit être considéré comme un caractère d'échappement. Un caractère d'échappement indique que le caractère qui le suit, qui autrement serait traité comme un caractère de délimiteur de zone ou de séquence de fin de ligne, est traité comme faisant partie de la valeur dans la zone. Le caractère d'échappement est ignoré pour les données de chaîne graphique. Il n'existe pas de valeur par défaut.
FILLRECORD
Pour une opération de chargement, la zone d'un enregistrement est chargée dans les colonnes d'une table cible de gauche à droite. Cette option indique si un enregistrement d'entrée peut contenir moins de zones qu'il n'existe de colonnes définies pour la table cible :
TRUE ou ON
Une ligne d'entrée peut contenir moins de zones, à condition que toutes les colonnes pour lesquelles une valeur est manquante peuvent prendre une valeur null. Les valeurs manquantes sont définies sur NULL. Si une ou plusieurs colonnes pour lesquelles une valeur est manquante ne peuvent pas être annulées, l'enregistrement est rejeté.
FALSE ou OFF
Une ligne d'entrée contenant moins de colonnes est rejetée. Il s'agit de la valeur par défaut.
FORMAT ou FILE_FORMAT
Format de données du fichier source :
TEXTE
Les données à charger ou déchargées sont au format délimité par texte. Il s'agit de la valeur par défaut.
INTERNAL
Les données sont dans un format interne utilisé par Netezza Platform Software (NPS). Cette valeur est valide uniquement lors du chargement des données d'un fichier vers la base de données, et non lors du déchargement de données dans un fichier. Si cette valeur est spécifiée pour l'option FORMAT, les options suivantes, et uniquement ces options, doivent également être spécifiées:
  • DATAOBJECT ou FILE_NAME.
  • REMOTESOURCE, SWIFT ou S3. Si l'option REMOTESOURCE est spécifiée, elle doit avoir la valeur LOCAL ou YES.
  • COMPRESS. La valeur doit être GZIP.
BINARY
Les données sont dans le format interne utilisé par Db2.
FIXED
Les données sont de longueur fixe.
Le format de longueur fixe est pris en charge uniquement pour les opérations de chargement.
Les fichiers au format de longueur fixe utilisent des positions ordinales qui sont décalées pour identifier les zones dans l'enregistrement.
Remarque :
  • Les options de table externe suivantes ne sont pas prises en charge pour le format de longueur fixe :
    • Délimiteur
    • Encoding
    • EscapeChar
    • FillRecord
    • IgnoreZero
    • IncludeZeroSeconds
    • Lfinstring
    • QuotedValue
    • RequireQuotes
    • TimeExtraZeros
    • TruncString
  • Il n'existe aucun délimiteur de zone.
  • Un délimiteur de fin d'enregistrement est requis même pour le dernier enregistrement.
  • Généralement, les données des fichiers au format de longueur fixe ne comportent pas de délimiteurs décimaux ou de délimiteurs de temps, car les délimiteurs ne sont pas nécessaires et utilisent de l'espace.
  • Les emplacements des délimiteurs sont fixes et spécifiés dans la définition de présentation, car les zones ont une taille fixe. Cette définition est fournie avec le fichier de données au format de longueur fixe.
  • Pour charger des données au format fixe dans la base de données, vous devez définir le type de données cible pour les zones et les emplacements de l'enregistrement.
  • Vous n'avez pas à charger toutes les zones dans un fichier au format de longueur fixe. Vous pouvez les ignorer à l'aide de la spécification filler.
  • L'ordre des zones dans le fichier de données doit correspondre à celui de la table cible. Vous pouvez également créer une définition de table externe qui spécifie l'ordre des zones sous forme de colonnes de base de données.
  • Vous pouvez modifier l'ordre des zones en utilisant une définition de table externe en combinaison avec une instruction insert-select.
  • Généralement, les valeurs inconnues ou les valeurs nulles sont représentées par des modèles de données connus qui sont classés comme représentant des valeurs nulles.
Les paramètres suivants s'appliquent lorsque l'option FORMAT de la table externe a la valeur FIXED :
DISPOSITION
Obligatoire.
Une présentation est une collection ordonnée de définitions de zone. Elle définit l'emplacement des zones de l'enregistrement d'entrée.
Spécifiez des définitions de zone séparées par une virgule dans les accolades { }.
Chaque définition de zone est constituée de clauses mutuellement exclusives et non superposées.
Pas de valeur par défaut.
Les clauses doivent être dans l'ordre suivant, même si certaines d'entre elles sont facultatives et peuvent être vides:
USE TYPE
Facultatif.
Indique si une zone est une zone de données normale, une zone de référence ou une zone de remplissage.
Pour les zones de données, cette valeur est omise.
Une zone de référence est spécifiée sous la forme REF. Cette spécification implique que la zone est désignée par une autre zone pour la longueur de zone ou les valeurs NULL.
Une zone de remplissage est spécifiée à l'adresse FILLER. Les zones de remplissage indiquent que les octets ou les caractères sont traités comme des obturateurs dans un fichier de données.
Nom
Facultatif.
Nom de la zone.
Actuellement, cette définition n'est pas utilisée. Généralement, elle est fournie pour identifier la zone.
TYPE
Facultatif.
Définit le type de la zone.
Si vous ne spécifiez pas le type, il obtient la valeur par défaut du type correspondant d'une colonne de tableau.
Les valeurs admises sont les suivantes :
  • CHAR
  • VARCHAR
  • NCHAR
  • NVARCHAR
  • SMALLINT
  • BIGINT
  • BINARY
  • VARBINARY
  • GRAPHIC
  • VARGRAPHIC
  • FLOAT
  • DOUBLE
  • DEC, NUM ou NUMERIC
  • DECFLOAT
  • BOOLEAN
  • DATE
  • PÉRIODE
  • HORODATAGE
Style
Facultatif.
Définit la représentation de la zone.
La représentation par défaut est basée sur le type de zone et l'option de format.
Tous les autres styles sont valides uniquement pour les types de zone non textuels correspondants.
Les valeurs admises sont les suivantes :
  • INTERNAL

    Valide uniquement pour les zones textuelles, c'est-à-dire char, varchar, nchar et nvarchar.

  • DECIMAL

    Valide pour les types de zone entiers et numériques.

  • DECIMALDELIM <'decimal-delim'>

    Valide pour les types de zones numériques, en virgule flottante, double et temporels (heure et horodatage).

  • FLOATING

    Valide pour les types de zone flottante ou double.

  • EXPONENTIEL

    Valide pour les types de zone flottante ou double.

  • YMD <'date-delim'>

    Valide pour les zones de date, y compris les autres styles de date pris en charge pour les options de table externe DateStyle et DateDelim.

  • 12Hour <'time-delim'>

    Valide pour les fuseaux horaires, y compris les autres styles de temps pris en charge pour les options de table externe TimeStyle et TimeDelim.

  • 24Hour <'time-delim'>

    Valide pour les fuseaux horaires, y compris les autres styles de temps pris en charge pour les options de table externe TimeStyle et TimeDelim.

  • YMD <'date-delim'> 24Hour <'time-delim'>

    Valide pour les zones d'horodatage, y compris les autres combinaisons de styles de date et d'heure prises en charge pour les options de table externe DateStyle, DateDelim, TimeStyle et TimeDelim.

  • TRUE_FALSE, Y_N, 1_0

    Valide pour les zones booléennes, y compris les autres styles booléens pris en charge pour l'option de table externe BoolStyle. Le style doit être conforme au format.

LENGTH
Facultatif.
Spécifié en octets ou caractères suivis du nombre ou de la référence interne à la zone de référence.
Nombre d'octets ou de caractères tels que fournis ou référencés par la zone de référence.
Pour les zones de référence ou les zones de remplissage, vous ne pouvez pas utiliser de références internes. Pour les zones de référence, le nombre d'octets indique comment les données sont lues à partir du fichier de données pour obtenir la valeur renvoyée.
Vous pouvez utiliser les signes et les signes moins comme suit :
BYTES @2 + 10
BYTES @2 - 10
NULLIF
Facultatif.
Définition de l'attribut Zone NULLESS.
Indique un modèle de données connu dans la zone qui, lorsqu'il est présent, signifie que la zone a la valeur null.
La longueur est égale ou inférieure à la largeur de la colonne. La longueur maximale est de 39 octets.
L'option NULLVALUE n'est pas prise en charge si la clause NULLIF est utilisée sur n'importe quelle zone d'une table.
Vous pouvez utiliser les types de référence suivants :
@
Référence interne aux zones numériques.
Correspondance exacte de la valeur numérique.
&
Référence externe.
Correspondance exacte de la valeur spécifiée.
&&
Référence isolée.
Les espaces de début et les espaces de fin doivent être ignorés avec la correspondance exacte de la chaîne.
Les valeurs null sont détaillées dans les exemples suivants :
Tableau 2. Exemple de présentation
Type d'utilisation Nom Type Son style Longueur Nullif
NA f1 int4 DECIMAL Octets 10 Nullif & = 0
NA f2 date AMJ Octets 10 Nullif &= '2000-10-10'
NA f3 char(20) INTERNAL Caractères 10 Nullif &&='ab'
Enregistrement de non concordance f4 char(10) NA Octets 10 NA
Rappel:
  • La zone renvoyée dans une clause de longueur doit être de type entier.
  • Vous ne devez pas spécifier l'option NULLIF pour les zones de référence ou les zones de remplissage.
  • Les zones de référence et les zones de remplissage ne peuvent pas avoir de longueur variable.
  • Les zones de longueur variable ne peuvent pas se référer.
  • Définissez la zone de référence dans une clause de longueur comme REF.
  • Les références de clause de longueur ne peuvent utiliser que la référence INTERNAL (@). Les références externes ou isolées ne sont pas prises en charge.
  • Entre la zone de référence d'une clause de longueur et la zone elle-même, les zones de référence ne sont pas autorisées.
  • Si le type de référence est INTERNAL (@), la clause NULLIF ne peut pas se référer à elle-même.
  • Si la colonne n'admet pas la valeur NULL, elle peut ne pas avoir la clause NULLIF.
  • La longueur variable est admise uniquement pour le type de chaîne de zones.
  • La clause NULLIF ne peut se référer qu'aux zones REF ou aux zones elles-mêmes.
  • Entre la zone désignée par la clause NULLIF et la zone elle-même, les autres zones de référence ne sont pas autorisées, à l'exception de la zone qui est mentionnée dans la clause de longueur.
  • La longueur d'enregistrement peut pointer vers la zone 1 uniquement pour référence.
  • Une REF doit avoir une zone qui la renvoie.
  • La clause NULLIF ne peut avoir des références externes que si la zone REF est un non-entier.
Recordlength
Indique la longueur de l'enregistrement entier, où les octets de l'indicateur NULL sont inclus s'ils existent, et le délimiteur d'enregistrement est exclu s'il existe.
La valeur est un entier constant.
La valeur peut également être une référence interne à la zone de référence dans la définition de présentation.
Il n'existe pas de valeur par défaut.
Vous pouvez utiliser les signes et les signes moins pour une référence interne comme suit :
RECORDLENGTH @1 + 10
RECORDLENGTH @1 - 10
IGNOREZERO ou TRIM_NULLS
Indique si la valeur binaire zéro dans les zones CHAR et VARCHAR doit être supprimée.
TRUE ou ON
La valeur d'octet zéro est ignorée.
FALSE ou OFF
La valeur d'octet zéro n'est pas ignorée. Il s'agit de la valeur par défaut.
KEEP
La valeur binaire zéro est acceptée et admise dans le champ d'entrée.
INCLUDEHEADER ou COLUMN_NAMES
Pour une opération de déchargement, si les noms de colonne de table doivent être inclus en tant qu'en-têtes dans le fichier de table externe:
TRUE ou ON
Les noms de colonne de table doivent être inclus en tant qu'en-têtes.
FALSE ou OFF
Les noms de colonne de table ne doivent pas être inclus comme en-têtes. Il s'agit de la valeur par défaut.
INCLUDEZEROSECONDS
Pour une opération de déchargement, indiquez 00 comme valeur de secondes lorsqu'aucune valeur de secondes n'est disponible:
TRUE ou ON
Indiquez 00 comme valeur de secondes.
FALSE ou OFF
Ne spécifiez pas de valeur pour les secondes. Il s'agit de la valeur par défaut.
INCLUDEHIDDEN
Pour une opération de chargement, indiquez si des valeurs de colonne masquées sont présentes dans un fichier de données.

L'option INCLUDEHIDDEN fonctionne lorsque vous créez une table externe à l'aide de la clause LIKE ou SAMEAS et que la table de base comporte des colonnes masquées.

exit utilisateur associé à une tâche
Un fichier de données contient des valeurs par rapport à la colonne masquée.
FAUX
Un fichier de données ne contient pas de valeurs par rapport à une colonne masquée. Il s'agit de la valeur par défaut. Vous pouvez modifier la valeur par défaut à l'aide de la variable de registre DB2_EXTBL_INCLUDE_HIDDEN_COLS.
LFINSTRING
Indique comment interpréter un caractère de saut de ligne non échappé (parfois appelé LF ou newline) dans les données de chaîne:
TRUE ou ON
Un caractère LF non échappé est interprété comme un délimiteur d'enregistrement uniquement s'il est dans la dernière zone d'un enregistrement ; sinon, il est traité comme des données. Pour créer un caractère LF dans la dernière zone d'un enregistrement à traiter en tant que données, vous devez placer la valeur de cette zone entre guillemets simples ou doubles.
FALSE ou OFF
Un caractère LF non échappé est interprété comme un délimiteur d'enregistrement quelle que soit sa position. Il s'agit de la valeur par défaut.

Cette option n'est pas prise en charge pour les opérations de déchargement.

Attention : Cette amélioration de la compatibilité SQL n'est disponible que dans les versions suivantes Db2 Version 11.5 Mod Pack 2 et versions ultérieures.
LOGDIR ou ERROR_LOG
Répertoire dans lequel sont écrits les fichiers suivants :
<database>.<schema>.<external-table-name>.<file-name>.<application-handle>.<id>.bad
Fichier contenant des enregistrements rejetés (c'est-à-dire des enregistrements qui n'ont pas pu être traités).
<database>.<schema>.<external-table-name>.<file-name>.<application-handle>.<id>.log
Un fichier journal.
La valeur par défaut est le répertoire dans lequel le fichier de table externe est écrit. Si la longueur du nom qui est construite pour un fichier .bad ou .log dépasse le maximum autorisé, le nom du fichier qui contient la table externe (indiquée par <file-name>) est tronqué de sorte que le maximum n'est pas dépassé.

Si un fichier .log ou .bad est généré lors de l'exécution d'une opération sur une partition, le nom du fichier généré est suffixé par une période suivie du numéro de partition à 3 chiffres.

MAXERRORS ou MAX_ERRORS
Pour une opération de chargement, le seuil du nombre d'enregistrements rejetés auquel le système arrête le traitement et annule immédiatement la charge. La valeur par défaut est 1 (c'est-à-dire qu'un enregistrement rejeté unique entraîne une annulation).
Pour un format de longueur fixe, les conditions suivantes s'appliquent :
  • L'analyseur syntaxique signale des erreurs pour chaque zone ou zone plutôt qu'une erreur pour la ligne.
  • Plusieurs erreurs peuvent être signalées pour la même ligne.
  • Lorsque l'analyseur syntaxique détecte une erreur dans une zone ou une zone, il récupère en utilisant la longueur de zone ou la longueur de zone. Elle se poursuit à partir de la zone ou de la zone suivante jusqu'à ce que la fin de l'enregistrement soit atteinte ou qu'une erreur irrémédiable se produise ou que la limite MaxErrors soit atteinte.
  • Les erreurs irrémédiables incluent les erreurs suivantes :
    • Non-concordance de la longueur d'enregistrement.
    • RecordDelimiter est introuvable.
    • La valeur RecordLength n'est pas valide, c'est-à-dire que la valeur est une valeur négative ou zéro.
    • La longueur de zone n'est pas valide, c'est-à-dire que la valeur est une valeur négative.
    • L'octet initial UTF-8 n'est pas valide.
    • Les octets de continuation UTF-8 ne sont pas valides.
MULTIPARTSIZEMB

Lorsque la variable de registre DB2_ENABLE_COS_SDK a la valeur ON, la communication Db2 Stockage distant avec le stockage des objets Cloud est facilitée par le biais d'un kit SDK COS de fournisseur intégré, qui permet à Db2 de diffuser des objets/fichiers dans le stockage d'objets Cloud en plusieurs parties (« téléchargement multipartie »). Ce paramètre indique la taille de pièce pour le téléchargement à plusieurs parties, en mégaoctets (Mo), pour le fichier en cours de déchargement, et remplace la valeur spécifiée dans le paramètre de configuration dbm de MULTIPARTEMB. Cette option est disponible à partir de la version 11.5, module de modification 7, dans les environnements Linux (x86) uniquement.

MAXROWS ou MAX_ROWS
Si la valeur est un entier positif, elle indique le nombre maximal d'enregistrements (lignes) dans la table externe à traiter. Si la valeur est 0 (valeur par défaut), aucune limite n'est définie et toutes les lignes sont traitées. Lors d'une opération de chargement, si MAXROWS est défini sur une valeur positive, après que le nombre de lignes a été traité, que certaines lignes aient été rejetées ou ignorées, le système arrête l'opération de chargement et valide tous les enregistrements insérés.
MERIDIANDELIM
Caractère mono-octet qui sépare le composant secondes du jeton AM ou PM dans les formats délimités et délimités de 12 heures d'une valeur de temps.
Le délimiteur par défaut est un espace (' ').
Entre le composant secondes et le jeton AM ou PM, aucun délimiteur n'est pas requis. Par exemple, les deux valeurs suivantes sont valides :
1:02:46.12345 AM
1:02:46.12345AM
NOLOG
Indique si le fichier .log de la table externe est créé.
Cette option ne s'applique pas aux fichiers .bad.
Les valeurs admises sont les suivantes :
exit utilisateur associé à une tâche
Aucun fichier .log n'est créé.
FAUX
Le fichier .log est créé.
Il s'agit de la valeur par défaut.
NULLVALUE ou NULL_VALUE
Chaîne UTF-8 d'au plus 4 octets à utiliser pour indiquer une valeur null. La valeur par défaut est 'NULL'.
PARTITION
Si la fonction DPF (Database Partitioning Feature) est activée pour la base de données, une table externe peut être partitionnée en plusieurs fichiers. Le nom de chacun des fichiers de données comprenant une table externe est suffixé par une période suivie d'un nombre à 3 chiffres compris entre 000 et 999 qui indique le numéro de la partition. Par exemple, si une table externe portant le nom DataFile.txt est divisée en trois partitions, les fichiers qui le composent portent les noms dataFile.txt.000, dataFile.txt.001 et dataFile.txt.002. Ces fichiers doivent être accessibles à tous les membres.
Pour une table externe partitionnée, l'option PARTITION indique à quelle partition ou partitions l'instruction s'applique:
PARTITION ALL
L'instruction s'applique à toutes les partitions qui constituent la table externe. Pour une opération de déchargement, il s'agit de la seule valeur autorisée.
PARTITION (n TO n)
L'instruction s'applique à toutes les partitions de la plage spécifiée, par exemple, PARTITION (54 À 62).
PARTITION (N,N, ...)
L'instruction s'applique uniquement à la partition ou aux partitions spécifiées, par exemple, PARTITION (53) ou PARTITION (51,57,58). Si plusieurs numéros de partition sont spécifiés, ils doivent être dans l'ordre croissant (sqlcode SQL0263N avec SQLSTATE=42615) et il ne peut pas exister des doublons (sqlcode SQL0265N avec SQLSTATE=42615).

Si un fichier .log ou .bad est généré lors de l'exécution d'une opération sur une table externe partitionnée, le nom du fichier généré est suffixé par une période suivie du numéro de partition à 3 chiffres.

Si le DPF est activé et que l'option PARTITION n'est pas spécifiée, la table externe est traitée comme une table à partition unique sur le membre coordinateur. Les noms du fichier de table externe et des fichiers .log et .bad ne sont pas suffixés par un numéro de partition.

Si le DPF n'est pas activé, l'option PARTITION peut être spécifiée, mais uniquement avec la valeur ALL, (0 à 0) ou (0) (SQL0644N). Elle n'aura aucun effet.

Les options REMOTESOURCE et PARTITION s'excluent mutuellement.

QUOTEDNULL
Pour une opération de chargement, comment interpréter une valeur qui est placée entre guillemets simples ou doubles et qui correspond à la valeur null spécifiée par l'option NULLVALUE ou NULL_VALUE (par exemple, "null" ou "NULL"):
TRUE ou ON
La valeur est interprétée comme une valeur null. Il s'agit de la valeur par défaut.
FALSE ou OFF
La valeur est interprétée comme une chaîne de caractères.
QUOTEDVALUE ou STRING_DELIMITER
Indique si les valeurs de données sont placées entre guillemets:
SINGLE ou YES
Les valeurs de données sont placées entre apostrophes (').
DOUBLE
Les valeurs de données sont placées entre guillemets (").
NO
Les valeurs de données ne sont pas placées entre guillemets. Il s'agit de la valeur par défaut.
RECORDDELIM ou RECORD_DELIMITER
Le littéral chaîne qui doit être interprété comme un délimiteur de ligne (enregistrement). La valeur par défaut est '\n'.

Lorsque CRINSTRING est défini sur TRUE, RECORDDELIM ne peut pas contenir de caractère CR ('\r'), à la seule exception d'un délimiteur CRLF ('\r\n') autorisé avec CRINSTRING uniquement pour le format texte.

REMOTESOURCE
Emplacement du fichier de table externe et, s'il réside sur un système distant, si les données de fichier doivent être compressées:
LOCAL
Le fichier se trouve sur le serveur local, c'est-à-dire le système qui héberge la base de données. Il s'agit de la valeur par défaut.
OUI
Le fichier réside sur un système autre que le serveur local. Par exemple, indiquez YES si un système client est connecté à la base de données et que le fichier réside sur ce système. Les données de fichier ne sont pas compressées avant leur transfert.
GZIP
Similaire à YES, sauf que les données de fichier sont compressées à l'aide de l'algorithme de compression GZIP avant le transfert des données, et sont décompressées après réception. Les performances globales sont améliorées lorsqu'une grande quantité de données compressibles est transférée.
LZ4
Simiaire à YES, sauf que les données de fichier sont compressées à l'aide de l'algorithme de compression LZ4 avant le transfert des données et qu'elles sont décompressées après réception. Les performances globales sont améliorées lorsqu'une grande quantité de données compressibles est transférée.

Les options REMOTESOURCE, SWIFT et S3 s'excluent mutuellement. Les options REMOTESOURCE et PARTITION s'excluent mutuellement. L'option COMPRESS ne peut pas être spécifiée si la valeur de l'option REMOTESOURCE est GZIP Ou LZ4.

REQUIREQUOTES
Indique si les guillemets sont obligatoires:
TRUE ou ON
Les guillemets sont obligatoires. L'option QUOTEDVALUE a la valeur YES, SINGLE ou DOUBLE.
FALSE ou OFF
Les guillemets ne sont pas obligatoires. Il s'agit de la valeur par défaut.
SKIPROWS ou SKIP_ROWS
Pour une opération de chargement, nombre de lignes à ignorer avant le début du chargement des données. La valeur par défaut est 0. Comme les lignes ignorées sont traitées avant qu'elles ne soient ignorées, une ligne ignorée peut toujours provoquer une erreur de traitement.
SOCKETBUFSIZE
Taille, en octets, des blocs de données lus à partir du fichier source. Les valeurs admises sont de 64 Ko - 800 Mo. Si vous spécifiez une valeur en dehors de cette plage, la valeur est définie sur la valeur valide la plus proche. La valeur par défaut est 8 Mo.
STRICTNUMERIC
Pour une opération de chargement, comment traiter une valeur à insérer dans une zone DECIMAL lorsque son échelle dépasse celle définie pour la zone:
TRUE ou ON
La ligne contenant la valeur à insérer est rejetée. Par exemple, si l'une des valeurs suivantes devait être chargée dans une zone DECIMAL (5, 3), la ligne contenant cette valeur serait rejetée :
12.666666666
-98.34496862785
0.00089
FALSE ou OFF
La ligne contenant la valeur à insérer est acceptée et la partie de la fraction décimale qui dépasse l'échelle définie pour la zone est tronquée. Il s'agit de la valeur par défaut. Par exemple, les valeurs de l'exemple précédent seront converties comme suit :
12.666
-98.344
0.000
SWIFT
Indique que le fichier de données source est situé dans un conteneur d'objets Swift. Les options REMOTESOURCE, SWIFT et S3 s'excluent mutuellement. Utilisez l'option DATAOBJECT pour indiquer le nom du fichier.
Syntaxe :
SWIFT (endpoint, authKey1, authKey2, bucket)
où :
Noeud final
Chaîne de caractères qui spécifie l'URL du service Web SWIFT.
authKey1
Chaîne de caractères qui indique l'ID d'accès ou le nom d'utilisateur du compte Swift OpenStack utilisé pour valider l'utilisateur.
authKey2
Chaîne de caractères qui indique le mot de passe du compte Swift OpenStack utilisé pour valider l'utilisateur.
compartiment
Nom du compartiment Swift OpenStack dans lequel se trouve le fichier.
Exemple :
CREATE EXTERNAL TABLE exttab1(a int) using 
  (dataobject 'datafile1.dat' 
   swift('https://dal05.objectstorage.softlayer.net/auth/v1.0/', 
    'XXXOS123456-2:xxx123456',
    'b207c6e974020737d92174esdf6d5be9382aa4c335945a14eaa9172c70f8df16', 
    'my_dev'
   )
  )
S3
Indique que le fichier de données source se trouve dans une librairie compatible S3. Les options REMOTESOURCE, SWIFT et S3 s'excluent mutuellement. Utilisez l'option DATAOBJECT pour indiquer le nom du fichier.
Syntaxe :
S3 (endpoint, authKey1, authKey2, bucket)
où :
Noeud final
Chaîne de caractères qui spécifie l'URL du service Web compatible S3.
authKey1
Chaîne de caractères qui indique l'ID de clé d'accès S3 des clés d'accès utilisées pour valider l'utilisateur et toutes les actions de l'utilisateur. Pour IBM Cloud Object Storage, il s'agit de l'ID de clé d'accès à partir des données d'identification HMAC.
authKey2
Chaîne de caractères qui spécifie la clé secrète S3 des clés d'accès utilisées pour valider l'utilisateur et toutes les actions de l'utilisateur. Pour IBM Cloud Object Storage, il s'agit de la clé d'accès secrète des données d'identification HMAC.
compartiment
Nom du compartiment S3 dans lequel réside le fichier.
Remarque : pour IBM Cloud Object Storage, afin de créer des informations d'identification HMAC, lors de la création de nouvelles informations d'identification de service, spécifiez " {"HMAC:true} dans le champ Add Inline Configuration Parameters (Ajouter des paramètres de configuration en ligne).
Exemple utilisant AWS S3:
CREATE EXTERNAL TABLE exttab2(a int) using 
  (dataobject 'datafile2.dat' 
   s3('s3.amazonaws.com', 
    'XXXOS123456-2:xxx123456',
    'bs07c6e974040737d92174e5e96d5be9382aa4c33xxx5a14eaa9172c70f8df16', 
    'my_dev'
   )
  )
Exemple d'utilisation de IBM Cloud Object Storage :
CREATE EXTERNAL TABLE exttab2(a int) using 
  (dataobject 'datafile2.dat' 
   s3('s3-api.us-geo.objectstorage.softlayer.net',
    '1a2bkXXXsaddntLo0xX0',
    'XXxxiEPjJ7T7WBUz74E6abcdABCDE8Q7RgU4gYY9',
    'my_dev'
   )
  )
AZURE
Indique que le fichier de données source se trouve dans Microsoft Azure Blob Storage. Les options REMOTESOURCE, SWIFT, S3 et AZURE s'excluent mutuellement. Utilisez l'option DATAOBJECT pour indiquer le nom du fichier. Syntaxe :
Syntaxe :
AZURE (endpoint, authKey1, authKey2, bucket)
où :
Noeud final
Chaîne de caractères qui spécifie l'URL du service Web AZURE.
authKey1
Chaîne de caractères qui indique l'ID d'accès ou le nom d'utilisateur du compte Blob d'Azure utilisé pour valider l'utilisateur.
authKey2
Chaîne de caractères qui indique la clé d'accès du compte Blob d'Azure utilisé pour valider l'utilisateur.
compartiment
Nom du conteneur de stockage Blob Azure (compartiment) dans lequel se trouve le fichier.
Exemple :
CREATE EXTERNAL TABLE exttab1(a int) using 
  (dataobject 'datafile1.dat' 
   azure('https://my_account.blob.core.windows.net', 
    'my_account',
    'lW+oHjmZecPS++IKgThAHlMUOaFUA5C6Z2RlFmc9JPpK34RO/ZIOywzILxJnzGPHz6d/yDrcQDAwH5wySbOZMQ==', 
    'my_bucket'
   )
  )
Exemple d'utilisation de IBM Cloud Object Storage :
CREATE EXTERNAL TABLE exttab2(a int) using 
  (dataobject 'datafile2.dat' 
   s3('s3-api.us-geo.objectstorage.softlayer.net',
    '1a2bkXXXsaddntLo0xX0',
    'XXxxiEPjJ7T7WBUz74E6abcdABCDE8Q7RgU4gYY9',
    'my_dev'
   )
  )
TIMEDELIM
Caractère d'un seul octet qui doit séparer les composants d'heure (heures, minutes et secondes). La valeur par défaut est ':'. Si TIMEDELIM est défini sur une chaîne vide, les heures, les minutes et les secondes doivent toutes être spécifiées sous la forme de nombres de deux chiffres. Les options TIMESTAMP_FORMAT et TIMEDELIM s'excluent mutuellement.
TIMEROUNDNANOS ou TIMEEXTRAZEROS
Remarque: Cette option s'applique uniquement aux colonnes TIMESTAMP.
Indique si les enregistrements contenant des valeurs de temps dont la précision différent de zéro dépasse six décimales doivent être acceptés (et arrondis à la microseconde la plus proche) ou rejetés:
exit utilisateur associé à une tâche
Tous les enregistrements sont acceptés. Leur temps est arrondi à la microseconde la plus proche.
FAUX
Seuls les enregistrements qui peuvent être stockés sans perte de précision (par exemple, '08.15.32.123' ou '08.15.32.12345600000', mais pas '08.15.32.1234567') sont acceptés. Tous les autres enregistrements sont rejetés. Il s'agit de la valeur par défaut.
TIMESTYLE
Format d'heure à utiliser dans le fichier de données :
24HOUR
Format sur 24 heures, par exemple 23:55. Il s'agit de la valeur par défaut.
12HOUR
Format sur 12 heures, par exemple 11:55 PM. Un jeton AM ou PM peut être précédé d'un espace unique et n'est pas sensible à la casse.
L'option TIMESTYLE et l'option TIME_FORMAT ou TIMESTAMP_FORMAT s'excluent mutuellement.
TIMESTAMP_FORMAT
Format de la zone d'horodatage dans le fichier de données. La valeur peut être l'une des chaînes de format acceptées par la fonction scalaire TIMESTAMP_FORMAT. La valeur par défaut est 'AAAA-MM-JJ HH.MI.SS'. L'option TIMESTAMP_FORMAT et TIMEDELIM, DATEDELIM, TIMESTYLE ou DATESTYLE s'excluent mutuellement.
TIME_FORMAT
Format de la zone horaire dans le fichier de données. La valeur peut être l'une des chaînes de format d'heure acceptées par la fonction scalaire TIMESTAMP_FORMAT. La valeur par défaut est HH.MI.SS. L'option TIME_FORMAT et une option TIMEDELIM ou TIMESTYLE s'excluent mutuellement.
TRIMBLANKS
Comment une table externe consiste à traiter les blancs de début ou de fin (c'est-à-dire les espaces de début ou de fin) dans une chaîne:
LEADING
Tous les blancs de début (c'est-à-dire les blancs qui précèdent le premier caractère non vide) sont supprimés.
TRAILING
Tous les blancs de fin (c'est-à-dire les blancs qui suivent le dernier caractère non blanc) sont supprimés.
BOTH
Tous les blancs de début et de fin sont supprimés.
NONE
Aucun blanc n'est supprimé. Il s'agit de la valeur par défaut.
Lors de la lecture de données à partir d'un fichier et de son chargement dans une table externe:
  • Si QUOTEDVALUE ou STRING_DELIMITER est indiqué avec les valeurs SINGLE, YES ou DOUBLE, les blancs de début et de fin entre guillemets ne sont pas supprimés.
  • Pour les données CHAR et NCHAR, les valeurs TRAILING ou BOTH n'auront aucun effet sur les blancs de fin, car la chaîne sera automatiquement remplie de nouveau avec des blancs de fin.
TRUNCSTRING ou TRUNCATE_STRING
Comment le système traite une chaîne CHAR ou VARCHAR qui dépasse sa taille de stockage déclarée:
exit utilisateur associé à une tâche
Le système tronque une valeur de chaîne qui dépasse sa taille de stockage déclarée.
FAUX
Le système renvoie une erreur lorsqu'une valeur de chaîne dépasse sa taille de stockage déclarée. Il s'agit de la valeur par défaut.
Y2BASE
L'année qui est le début de la période de 100 ans. Les années qui sont indiquées comme 2 chiffres sont comptées à partir de cette année. La valeur par défaut est 2000. Cette option doit être spécifiée lorsque DATESTYLE a la valeur Y2MD, MDY2, DMY2, MONDY2 ou DMONY2.
Tableau 3. Options
Option Par défaut S'applique au chargement S'applique à Unload.
Azure (pas de valeur par défaut) Y Y
BOOLSTYLE ou BOOLEAN_STYLE 1_0 Y Y
Cardinalité (pas de valeur par défaut) Y Y
CCSID (pas de valeur par défaut) Y Y
COMPRESS NO Y Y
CRINSTRING FAUX Y Y
CTRLCHARS FAUX Y N
DATAOBJECT ou FILE_NAME (pas de valeur par défaut) Y Y
DATEDELIM '-' Y Y
DATETIMEDELIM Espace (' ') Y Y
DATESTYLE AMJ Y Y
DATE_FORMAT AAAA-MM-JJ Y Y
DECIMALDELIM ou DECIMAL_CHARACTER '.' Y Y
SEPARATEUR '|' Y Y
ENCODING INTERNAL Y O1
ESCAPECHAR ou ESCAPE_CHARACTER (pas de valeur par défaut) Y Y
FILLRECORD FAUX Y N
FORMAT ou FILE_FORMAT TEXTE Y Y
IGNOREZERO ou TRIM_NULLS FAUX Y N
INCLUDEHEADER ou COLUMN_NAMES FAUX N Y
INCLUDEZEROSECONDS FAUX Y Y
INCLUDEHIDDEN FAUX Y N
LFINSTRING FAUX Y N
LOGDIR ou ERROR_LOG Répertoire cible du fichier de table externe Y N
MULTIPARTSIZEMB Valeur spécifiée par le paramètre de configuration MULTIPARTEMB dbm. Y N
MAXERRORS ou MAX_ERRORS 1 Y N
MAXROWS ou MAX_ROWS 0 Y N
MERIDIANDELIM Espace (' ') Y Y
NOLOG FAUX Y Y
NULLVALUE ou NULL_VALUE nULL Y Y
PARTITION (pas de valeur par défaut) Y Y
QUOTEDNULL exit utilisateur associé à une tâche Y N
QUOTEDVALUE NO Y N
RECORDDELIM ou RECORD_DELIMITER '\n Y N
REMOTESOURCE LOCAL Y Y
REQUIREQUOTES FAUX Y N
SKIPROWS ou SKIP_ROWS 0 Y N
SOCKETBUFSIZE 8 Mo Y Y
STRICTNUMERIC FAUX Y N
SWIFT (pas de valeur par défaut) Y Y
S3 (pas de valeur par défaut) Y Y
TIMEDELIM ':' Y Y
TIMEROUNDNANOS ou TIMEEXTRAZEROS FAUX Y N
TIMESTAMP_FORMAT 'AAAA-MM-JJ HH.MI.SS' Y Y
TIMESTYLE 24HOUR Y Y
TIME_FORMAT HH.MI.SS Y Y
TRIMBLANKS NONE Y Y
TRUNCSTRING ou TRUNCATE_STRING FAUX Y N
Y2BASE 2000 Y N
1 uniquement pour les valeurs INTERNAL, UTF8 et LATIN9.
table jointe

Une table jointe spécifie un ensemble de résultats intermédiaire qui est le résultat d'une ou de plusieurs opérations de jointure. Pour plus d'informations, voir table jointe.

spécification de période

Une spécification de période identifie une table de résultats intermédiaire composée des lignes de la table référencée où la période correspond à la spécification. Une spécification de période peut être spécifiée après le nom d'une table temporelle ou le nom d'une vue. Le même nom de période ne doit pas être spécifié plus d'une fois pour la même référence de table (SQLSTATE 428HY). Les lignes de la référence de table sont dérivées par application des spécifications de période.

Si la table est une table temporelle de période système et qu'une spécification de période pour la période SYSTEM_TIME n'est pas spécifiée, la référence de table inclut toutes les lignes en cours et n'inclut aucune ligne d'historique de la table. Si la table est une table temporelle de période d'application et qu'une spécification de période pour la période BUSINESS_TIME n'est pas spécifiée, la référence de table inclut toutes les lignes de la table. Si la table est une table bitemporale et qu'une spécification de période n'est pas spécifiée à la fois pour SYSTEM_TIME et BUSINESS_TIME, la référence de table inclut toutes les lignes en cours de la table et n'inclut aucune ligne d'historique de la table.

Si la référence de table est une référence de vue unique, les lignes de la référence de vue sont dérivées par application des spécifications de période à toutes les tables temporelles accessibles lors du calcul de la table de résultats de la vue. Si la vue n'accède à aucune table temporelle, la spécification de période n'a aucun effet sur la table de résultats de la vue. Si period-specification est utilisé, la définition de vue ou les définitions de vue référencées lors du calcul de la table de résultats de la vue ne doivent pas inclure de références à des fonctions SQL compilées ou à des fonctions externes avec une indication d'accès aux données autre que NO SQL (SQLSTATE 428HY).

Si le registre spécial CURRENT TEMPORAL SYSTEM_TIME est défini sur une valeur autre que la valeur null, une spécification de période qui fait référence à SYSTEM_TIME ne doit pas être spécifiée pour la référence de table ou de vue, sauf si la valeur en vigueur pour l'option de liaison SYSTIMESENSIJUSQU est NO (SQLSTATE 428HY).

Si le registre spécial CURRENT TEMPORAL BUSINESS_TIME est défini sur une valeur autre que la valeur null, une spécification de période qui fait référence à BUSINESS_TIME ne doit pas être spécifiée pour la référence de table ou de vue, sauf si la valeur en vigueur pour l'option de liaison BUSTIMESENSITIVE est NO (SQLSTATE 428HY).

POUR SYSTEM_TIME

Indique que la période SYSTEM_TIME est utilisée pour la spécification de période. Si la clause est spécifiée après un nom-table, la table doit être une table temporelle de période système (SQLSTATE 428HY). FOR SYSTEM_TIME ne doit pas être spécifié si la valeur du registre spécial CURRENT TEMPORAL SYSTEM_TIME n'est pas null et que l'option de liaison SYSTIMESENSIJUSQU est définie sur YES (SQLSTATE 428HY).

POUR BUSINESS_TIME

Indique que la période BUSINESS_TIME est utilisée pour la spécification de période. Si la clause est spécifiée à la suite d'un nom-table, BUSINESS_TIME doit être une période définie dans la table (SQLSTATE 4274M). FOR BUSINESS_TIME ne doit pas être spécifié si la valeur du registre spécial CURRENT TEMPORAL BUSINESS_TIME n'est pas null et que l'option de liaison BUSTIMESENSITIVE est définie sur YES (SQLSTATE 428HY).

value, value1et value2

Les expressions value, value1et value2 renvoient la valeur null ou une valeur de l'un des types de données intégrés suivants (SQLSTATE 428HY): DATE, TIMESTAMP ou une chaîne de caractères qui n'est pas un objet CLOB ou DBCLOB. Si l'argument est une chaîne de caractères, il doit s'agir d'une représentation de chaîne de caractères valide d'un horodatage ou d'une date (SQLSTATE 22007). Pour connaître les formats valides des représentations de chaîne des valeurs d'horodatage, voir la section Représentations de chaîne des valeurs de date et d'heure dans la rubrique Valeurs de date et d'heure.

Chaque expression peut contenir l'un des opérandes pris en charge suivants (SQLSTATE 428HY):
  • Constante
  • Registre spécial
  • Variable. Pour plus de détails, voir Références aux variables.
  • marqueur de paramètre
  • Fonction scalaire dont les arguments sont des opérandes pris en charge (les fonctions définies par l'utilisateur et les fonctions non déterministes ne peuvent pas être utilisées)
  • spécification CAST où l'opérande cast est pris en charge
  • expression utilisant des opérateurs et des opérandes arithmétiques
AS OF valeur

Indique que la référence de table inclut chaque ligne pour laquelle la valeur de la colonne de début pour la période spécifiée est inférieure ou égale à valeur, et la valeur de la colonne de fin pour la période est supérieure à valeur. Si valeur est la valeur null, la référence de table est une table vide.

Exemple: La requête suivante renvoie les informations de couverture d'assurance pour le numéro de police d'assurance 100 le 31 août 2010.
SELECT coverage FROM policy_info FOR BUSINESS_TIME
		AS OF '2010-08-31' WHERE policy_id = '100'
DE value1 AU value2

Indique que la référence de table inclut des lignes qui existent pour la période spécifiée de value1 à value2. Une ligne est incluse dans la référence de table si la valeur de la colonne de début pour la période spécifiée dans la ligne est inférieure à value2et si la valeur de la colonne de fin pour la période spécifiée dans la ligne est supérieure à value1. La référence de table contient zéro ligne si value1 est supérieure ou égale à value2. Si value1 ou value2 est la valeur null, la référence de table est une table vide.

Exemple: La requête suivante renvoie les informations de couverture d'assurance pour la police d'assurance 100, au cours de l'année 2009 (du 1er janvier 2009 à 12h00 jusqu'au 1er janvier 2010).
SELECT coverage FROM policy_info FOR BUSINESS_TIME
		FROM '2009-01-01' TO '2010-01-01' WHERE policy_id = '100'
ENTRE value1 ET value2

Indique que la référence de table inclut des lignes dans lesquelles la période spécifiée chevauche à tout moment entre value1 et value2. Une ligne est incluse dans la référence de table si la valeur de la colonne de début pour la période spécifiée dans la ligne est inférieure ou égale à value2 et que la valeur de la colonne de fin pour la période spécifiée dans la ligne est supérieure à value1. La référence de table contient zéro ligne si value1 est supérieure à value2. Si value1 est égal à value2, l'expression est équivalente à AS OF value1. Si value1 ou value2 est la valeur null, la référence de table est une table vide.

Exemple: La requête suivante renvoie les informations de couverture d'assurance pour le numéro de police d'assurance 100, au cours de l'année 2008 (entre le 1er janvier 2008 et le 31 décembre 2008 inclus).
SELECT coverage FROM policy_info FOR BUSINESS_TIME 
		BETWEEN '2008-01-01' AND '2008-12-31' WHERE policy_id = '100'
Les alternatives de syntaxe pour les clausesperiod-specificationsont les suivantes:
  • AS OF TIMESTAMP peut être spécifié à la place de FOR SYSTEM_TIME AS of
  • VERSIONS BETWEEN TIMESTAMP peut être spécifié à la place de FOR SYSTEM_TIME BETWEEN
clause-corrélation
Les noms exposés de toutes les références de table doivent être uniques. Un nom exposé est:
  • nom-corrélation
  • Un nom-table qui n'est pas suivi d'un nom-corrélation
  • Un nom-vue qui n'est pas suivi d'un nom-corrélation
  • Un pseudonyme qui n'est pas suivi d'un nom-corrélation
  • Un nom-alias qui n'est pas suivi d'un nom-corrélation

Si une clause correlation-clause ne suit pas une référence function-name , une expression xmltable-expression , une expression de table imbriquée ou une référence data-change-table-reference , ou si une clause typée-correlation-clause ne suit pas une référence function-name , il n'y a pas de nom exposé pour cette référence de table.

Chaque nom-corrélation est défini comme un identificateur de l' nom-table, nom-vue, pseudonyme, nom-fonction référence, expression-table-xml, expression-table imbriquée ou data-change-table-reference. Toute référence qualifiée à une colonne doit utiliser le nom exposé. Si le même nom de table, de vue ou de pseudonyme est spécifié deux fois, au moins une spécification doit être suivie d'un nom-corrélation. Le nom-corrélation est utilisé pour qualifier les références aux colonnes de la table, de la vue ou de l'alias. Lorsqu'un nom-corrélation est spécifié, nom-colonnepeut également être spécifié pour donner des noms aux colonnes de la référence de table . Si la clause-corrélation n'inclut pas nom-colonnes, les noms de colonne exposés sont déterminés comme suit:
  • Noms de colonne de la table, de la vue ou du pseudonyme référencé lorsque table-reference est un nom-table, nom-vue, pseudonymeou alias-name
  • Noms de colonne spécifiés dans la clause RETURNS de l'instruction CREATE FUNCTION lorsque la référence-table est une référence nom-fonction
  • Noms de colonne spécifiés dans la clause COLUMNS de l'expression xmltable-expression lorsque table-reference est une expression xmltable-expression
  • Noms de colonne exposés par l'instruction FULLSELECT lorsque table-reference est une expression-table-imbriquée
  • Les noms de colonne de la table cible de l'instruction de modification de données, ainsi que les colonnes INCLUDE définies lorsque table-reference est une data-change-table-reference
clause-échantillon-table

La clause facultative tablesample-clause peut être utilisée pour obtenir un sous-ensemble aléatoire (un échantillon) des lignes à partir du nom-tablespécifié, plutôt que le contenu complet de ce nom-table, pour cette requête. Cet échantillonnage s'ajoute aux prédicats spécifiés dans la clause where. A moins que la clause facultative REPEATABLE ne soit spécifiée, chaque exécution de la requête génère généralement un échantillon différent, sauf dans les cas de dégénération où la table est si petite par rapport à la taille de l'échantillon qu'un échantillon doit renvoyer les mêmes lignes. La taille de l'échantillon est contrôlée par l'expression numérique numeric-expression1 entre parenthèses, représentant un pourcentage approximatif (P) de la table à renvoyer.

TABLESAMPLE

La méthode d'obtention de l'échantillon est spécifiée après le mot clé TABLESAMPLE et peut être BERNOULLI ou SYSTEM. Le nombre exact de lignes dans l'échantillon peut être différent pour chaque exécution de la requête, mais il est en moyenne d'environ P pour cent de la table, avant que les prédicats réduisent davantage le nombre de lignes.

Le nom-table doit être une table stockée. Il peut s'agir d'un nom de table de requêtes matérialisée (MQT), mais pas d'une sous-requête ou d'une expression de table pour laquelle une MQT a été définie, car il n'est pas garanti que le gestionnaire de base de données acheminera vers la MQT pour cette sous-requête.

D'un point de vue sémantique, l'échantillonnage d'une table se produit avant tout autre traitement de requête, comme l'application de prédicats ou l'exécution de jointures. Les accès répétés d'une table échantillonnée dans une seule exécution d'une requête (par exemple, dans une jointure par boucle imbriquée ou dans une sous-requête corrélée) renvoient le même échantillon. Plusieurs tables peuvent être échantillonnées dans une requête.

Bernoulli

L'échantillonnage BERNOULLI tient compte de chaque ligne individuellement. Elle inclut chaque ligne de l'échantillon avec la probabilité P/100 (où P est la valeur de numeric-expression1) et exclut chaque ligne avec la probabilité 1- P/100, indépendamment des autres lignes. Par conséquent, si l'expression numeric-expression1 est évaluée à la valeur 10, représentant un échantillon de 10%, chaque ligne est incluse avec la probabilité 0.1et exclue avec la probabilité 0.9.

SYSTEME

L'échantillonnage SYSTEM permet au gestionnaire de la base de données de déterminer la manière la plus efficace d'effectuer l'échantillonnage. Dans la plupart des cas, l'échantillonnage SYSTEM appliqué à un nom-table signifie que chaque page de nom-table est incluse dans l'échantillon avec la probabilité P/100et exclue avec la probabilité 1- P/100. Toutes les lignes de chaque page incluse sont qualifiées pour l'échantillon. L'échantillonnage SYSTEM d'un nom-table s'exécute généralement beaucoup plus rapidement que l'échantillonnage BERNOULLI, car moins de pages de données sont extraites. Cependant, l'échantillonnage SYSTEM peut souvent donner des estimations moins précises pour les fonctions d'agrégation, telles que SUM (SALES), en particulier si les lignes de nom-table sont regroupées sur des colonnes référencées dans cette requête. L'optimiseur peut, dans certaines circonstances, décider qu'il est plus efficace d'effectuer un échantillonnage SYSTEM comme s'il s'agissait d'un échantillonnage BERNOULLI. Par exemple, lorsqu'un prédicat de nom-table peut être appliqué par un index et qu'il est beaucoup plus sélectif que le taux d'échantillonnage P.

numeric-expression1

numeric-expression1 indique la taille de l'échantillon à obtenir à partir de nom-table, exprimée en pourcentage. Il doit s'agir d'une expression numérique constante qui ne peut pas contenir de colonnes. L'expression doit avoir pour résultat un nombre positif inférieur ou égal à 100, mais qui peut être compris entre 1 et 0. Par exemple, la valeur 0.01 représente un centième de pourcentage, ce qui signifie qu'une ligne sur 10 000 est échantillonnée en moyenne. Une numeric-expression1 dont le résultat est 100 est traitée comme si la clause tablesample n'était pas spécifiée. Si numeric-expression1 a pour résultat la valeur null ou une valeur supérieure à 100 ou inférieure à 0, une erreur est renvoyée (SQLSTATE 2202H).

RÉPÉTABLE ( numeric-expression2 )

Il est parfois souhaitable que l'échantillonnage soit reproductible d'une exécution de la requête à l'autre ; par exemple, lors des tests de régression ou du débogage de la requête. Pour ce faire, vous pouvez spécifier la clause REPEATABLE. La clause REPEATABLE requiert la spécification d'une numeric-expression2 entre parenthèses, qui joue le même rôle que la valeur de départ dans un générateur de nombres aléatoires. L'ajout de la clause REPEATABLE à la clause tablesample de n'importe quelle nom-table garantit que les exécutions répétées de cette requête (en utilisant la même valeur pour numeric-expression2) renvoient le même exemple, en supposant que les données elles-mêmes n'ont pas été mises à jour, réorganisées ou repartitionnées. Pour garantir que le même échantillon de nom-table est utilisé dans plusieurs requêtes, il est recommandé d'utiliser une table temporaire globale. Sinon, les requêtes multiples peuvent être combinées en une seule requête, avec plusieurs références à un exemple défini à l'aide de la clause WITH.

Exemples :
  1. Demandez un échantillon de Bernoulli de 10% de la table Sales à des fins d'audit.
      SELECT * FROM Sales
        TABLESAMPLE BERNOULLI(10)
  2. Calculez le revenu total des ventes dans la région Nord-Est, pour chaque catégorie de produit, à l'aide d'un échantillon SYSTEM aléatoire de 1% de la table Ventes. La sémantique de SUM concerne l'échantillon lui-même. Par conséquent, pour extrapoler les ventes à l'ensemble de la table Sales, la requête doit diviser ce SUM par la fréquence d'échantillonnage (0.01).
    SELECT SUM(Sales.Revenue) / (0.01)
      FROM Sales TABLESAMPLE SYSTEM(1)
      WHERE Sales.RegionName = 'Northeast'
      GROUP BY Sales.ProductCategory
  3. A l'aide de la clause REPEATABLE, modifiez la requête précédente pour vous assurer que le même résultat (mais aléatoire) est obtenu chaque fois que la requête est exécutée. La valeur de la constante entre parenthèses est arbitraire.
    SELECT SUM(Sales.Revenue) / (0.01)
      FROM Sales TABLESAMPLE SYSTEM(1) REPEATABLE(3578231)
      WHERE Sales.RegionName = 'Northeast'
      GROUP BY Sales.ProductCategory
clause-cardinalité-UDF-table
La clause table-UDF-cardinality peut être spécifiée pour chaque référence de fonction de table définie par l'utilisateur dans la clause FROM. Cette option indique le nombre attendu de lignes à renvoyer uniquement pour l'instruction SELECT qui le contient. Les clauses CARDINALITY et CARDINALITY MULTIPLIER ne sont pas autorisées si la fonction de table est une fonction de table SQL en ligne (SQLSTATE 42887).
CARDINALITY entier-constante
Indique une estimation du nombre attendu de lignes renvoyées par la référence à la fonction définie par l'utilisateur. La plage de valeurs de entier-constante est comprise entre 0 et 9 223 372 036 854 775 807 inclus.
MULTIPLICATEUR DE CARDINALITÉ constante-numérique

Le produit du MULTIPLICATEUR DE CARDINALITÉ constante-numérique spécifié et de la valeur de cardinalité de référence sont utilisés par le serveur de base de données comme le nombre attendu de lignes renvoyées par la référence de fonction de table.

Dans ce cas, numérique-constante peut être au format entier, décimal ou à virgule flottante. La valeur admise doit être supérieure ou égale à 0. Si la notation décimale est utilisée, le nombre de chiffres peut atteindre 31. Une valeur entière est traitée comme un nombre décimal sans fraction. Si zéro est spécifié ou si la cardinalité calculée est inférieure à 1, la cardinalité de la référence à la fonction de table définie par l'utilisateur est supposée être 1.

Valeur de la colonne CARDINALITY de SYSSTAT.ROUTINES pour le nom de fonction de table est utilisé comme valeur de cardinalité de référence. Si aucune valeur n'est définie dans la colonne CARDINALITY de SYSSTAT.ROUTINES, une valeur finie est supposée être sa valeur par défaut pour la valeur de cardinalité de référence. Cette valeur finie est la même que celle utilisée pour les tables pour lesquelles l'utilitaire RUNSTATS n'a pas collecté de statistiques.

Seule une constante numérique peut suivre le mot clé CARDINALITY ou CARDINALITY MULTIPLIER. Une variable hôte ou un marqueur de paramètre n'est pas pris en charge. La spécification d'une valeur de cardinalité dans une référence de fonction de table ne modifie pas la valeur de colonne CARDINALITY pour la fonction dans SYSSTAT.ROUTINES .

La valeur de CARDINALITY pour les fonctions de table SQL externe et compilée définies par l'utilisateur peut être modifiée en mettant à jour la colonne CARDINALITY dans SYSSTAT.ROUTINES . La valeur CARDINALITY d'une fonction de table externe peut également être initialisée en spécifiant l'option CARDINALITY dans l'instruction CREATE FUNCTION (table externe) lorsqu'une fonction de table définie par l'utilisateur est créée.

clause-corrélation-typée
Une clause de corrélation typée définit l'apparence et le contenu de la table générée par une fonction de table générique. Cette clause doit être spécifiée lorsque table-function-references est une fonction de table générique et ne peut pas être spécifiée pour une autre référence de table. Les valeurs data-type suivantes sont prises en charge dans les fonctions de table génériques:
Tableau 4. Types de données pris en charge dans les fonctions de table génériques
Type de données de colonne SQL Type de données Java™ équivalent
SMALLINT court
INTEGER entier
BIGINT long
REAL séparer
DOUBLE doublon
DECIMAL(p,s) java.math.BigDecimal
NUMERIC (p, s) java.math.BigDecimal
char(n) java.lang.String
CHAR(N) FOR BIT DATA COM.ibm.db2.app.Blob
VARCHAR(n) java.lang.String
VARCHAR(N) FOR BIT DATA COM.ibm.db2.app.Blob
GRAPHIC(N) java.lang.String
VARGRAPHIC(N) Chaîne
BLOB(N) COM.ibm.db2.app.Blob
CLOB(N) COM.ibm.db2.app.Clob
DBCLOB(N) COM.ibm.db2.app.Clob
DATE Chaîne
PÉRIODE Chaîne
HORODATAGE Chaîne
XML AS CLOB (n) COM.ibm.db2.jcc.DB2Xml
continu-gestionnaire

Certaines erreurs qui se produisent dans une expression-table-imbriquée peuvent être tolérées et au lieu de renvoyer une erreur, la requête peut continuer et renvoyer un résultat. Cette expression est appelée expression-table-imbriquée-tolérante aux erreurs.

La spécification de la clause RETURN DATA UNTIL entraîne la création de toutes les lignes renvoyées par l'instruction FULLSELECT avant que la condition indiquée ne soit rencontrée pour constituer l'ensemble de résultats de l'instruction FULLSELECT. Cela signifie qu'un ensemble de résultats partiel (qui peut également être un ensemble de résultats vide) issu de l'instruction FULLSELECT est acceptable en tant que résultat pour expression-table-imbriquée.

Le mot clé FEDERATED limite la condition pour traiter uniquement les erreurs qui se produisent sur une source de données distante.

La condition peut être spécifiée en tant que valeur SQLSTATE, avec une longueur string-constant de 5. Vous pouvez éventuellement spécifier une valeur SQLCODE pour chaque valeur SQLSTATE spécifiée. Pour les applications portables, spécifiez les valeurs SQLSTATE autant que possible, car les valeurs SQLCODE ne sont généralement pas portables sur toutes les plateformes et ne font pas partie de la norme SQL.

Seules certaines conditions peuvent être tolérées. Les erreurs qui ne permettent pas l'exécution du reste de la requête ne peuvent pas être tolérées et une erreur est renvoyée pour l'ensemble de la requête. La valeur specific-condition-value peut spécifier des conditions qui ne peuvent pas être réellement tolérées par le gestionnaire de base de données, même si une valeur SQLSTATE ou SQLCODE spécifique est spécifiée, et dans ces cas, une erreur est renvoyée.

Une requête ou une vue contenant une expression-table-imbriquée tolérante aux erreurs est en lecture seule.

L'instruction FULLSELECT d'une expression-table-imbriquée tolérante aux erreurs n'est pas optimisée à l'aide de tables de requêtes matérialisées.

valeur-condition-spécifique
Les valeurs SQLSTATE et SQLCODE suivantes sont susceptibles, lorsqu'elles sont spécifiées, d'être tolérées par le gestionnaire de base de données:
  • SQLSTATE 08001 ; SQLCODEs -1336, -30080, -30081, -30082
  • SQLSTATE 08004
  • ETATSQL 42501
  • SQLSTATE 42704 ; SQLCODE -204
  • SQLSTATE 42720
  • SQLSTATE 28000

Références corrélées dans les références de table

Les références corrélées peuvent être utilisées dans des expressions de table imbriquées ou en tant qu'arguments de fonctions de table. La règle de base qui s'applique à ces deux cas est que la référence corrélée doit provenir d'une référence de table à un niveau supérieur dans la hiérarchie des sous-requêtes. Cette hiérarchie inclut les références de table qui ont déjà été résolues dans le traitement de gauche à droite de la clause FROM. Pour les expressions de table imbriquées, le mot clé LATERAL doit exister avant l'instruction FULLSELECT. Les exemples suivants présentent une syntaxe valide:
  Example 1:  SELECT t.c1, z.c5
              FROM t, TABLE( tf3(t.c2) ) AS z      -- t precedes tf3
              WHERE t.c3 = z.c4;                   -- in FROM, so t.c2
                                                   -- is known

  Example 2:  SELECT t.c1, z.c5
              FROM t, TABLE( tf4(2 * t.c2) ) AS z  -- t precedes tf4
              WHERE t.c3 = z.c4;                   -- in FROM, so t.c2
                                                   -- is known

  Example 3:  SELECT d.deptno, d.deptname,
                     empinfo.avgsal, empinfo.empcount
              FROM department d,
                   LATERAL (SELECT AVG(e.salary) AS avgsal,
                              COUNT(*) AS empcount
                       FROM employee e           -- department precedes nested
                       WHERE e.workdept=d.deptno -- table expression and
                      ) AS empinfo;              -- LATERAL is specified, 
                                                 -- so d.deptno is known
Mais les exemples suivants ne sont pas valides:
  Example 4:  SELECT t.c1, z.c5
              FROM TABLE( tf6(t.c2) ) AS z, t  -- cannot resolve t in t.c2!
              WHERE t.c3 = z.c4;               -- compare to Example 1 above.

  Example 5:  SELECT a.c1, b.c5
              FROM TABLE( tf7a(b.c2) ) AS a, TABLE( tf7b(a.c6) ) AS b
              WHERE a.c3 = b.c4;               -- cannot resolve b in b.c2!

  Example 6:  SELECT d.deptno, d.deptname,
                     empinfo.avgsal, empinfo.empcount
              FROM department d,
                   (SELECT AVG(e.salary) AS avgsal,
                              COUNT(*) AS empcount
                       FROM employee e           -- department precedes nested
                       WHERE e.workdept=d.deptno -- table expression but 
                      ) AS empinfo;              -- LATERAL is not specified,
                                                 -- so d.deptno is unknown