CODE RETOUR -270

FUNCTION NOT SUPPORTED

Explication :
L’instruction ne peut pas être traitée car elle enfreint une ou plusieurs des restrictions suivantes :

ALTER FUNCTION statement

  • Une fonction masquée ne peut pas être modifiée.

ALTER INDEX or CREATE INDEX statements

  • Une instruction CREATE INDEX ou ALTER INDEX ne doit pas spécifier PADDED pour un index XML ou un index sur une colonne VARBINARY.
  • Une instruction CREATE INDEX ou ALTER INDEX ne doit pas spécifier une colonne définie comme NOT NULL lorsque l’index est défini avec EXCLUDE NULL KEYS.
  • Une instruction CREATE INDEX ne doit pas spécifier UNIQUE, BUSINESS_TIME WITHOUT OVERLAPS, une spécification d’index XML ou une expression de clé lorsque l’index est défini avec EXCLUDE NULL KEYS.
  • Une instruction CREATE INDEX ne doit pas spécifier EXCLUDE NULL KEYS lorsque l’index est un index de partitionnement.
  • Une instruction CREATE INDEX ne doit pas spécifier ASC, DESC ou RANDOM pour un index XML.
  • Une instruction CREATE INDEX ne doit pas spécifier DESC ou RANDOM si l’index est un index basé sur une expression.
  • Une instruction CREATE INDEX ne doit pas spécifier DESC, PADDED ou RANDOM pour une colonne Unicode Db2 11 dans une table EBCDIC.
  • Une instruction CREATE INDEX ne doit pas spécifier INCLUDE ou CLUSTER pour un index basé sur une expression.
  • Une instruction CREATE INDEX ne doit pas spécifier de colonne BINARY ou VARBINARY dans une clé de partitionnement.
  • Une instruction CREATE ou ALTER INDEX ne doit pas spécifier RANDOM pour un index qui contient une colonne définie comme TIMESTAMP WITH TIME ZONE ou DECFLOAT.
  • Une instruction CREATE INDEX doit spécifier DEFER YES pour un index spatial.
  • Une instruction CREATE INDEX ne doit pas spécifier le nom d’une table temporaire globale déclarée.
  • Une colonne ne peut avoir qu’un seul index spatial.
  • Lorsqu’un index spatial est créé sur une colonne de BLOB ou de type distinct sur BLOB, l’espace table LOB qui stocke la colonne BLOB doit exister.
  • Un index spatial ne peut pas être modifié.
  • La limite interne de 30 000 octets pour le descripteur d’objet versionné (OBD) a été dépassée. Cette condition peut se produire lorsqu’une instruction ALTER INDEX a généré une nouvelle version d’index.
  • A CREATE INDEX DSSIZE et CREATE INDEX PART DSSIZE ne peuvent pas être spécifiés tous les deux dans la même instruction.

ALTER PROCEDURE statement

  • Une procédure obscurcie ne peut pas être modifiée.

ALTER TABLE or CREATE TABLE statements

  • Une instruction ALTER TABLE ne doit pas tenter de modifier une colonne VARBINARY en BINARY si cette colonne fait partie d’un index unique.
  • Une instruction ALTER TABLE ne doit pas spécifier de table de requête matérialisée dans une clause ADD CLONE. Modifiez la table de requête matérialisée en une table de base avant de modifier la table.
  • Une instruction ALTER TABLE ou CREATE TABLE ne peut spécifier la clause KEY LABEL que pour les tables d’un espace table universel ou partitionné.
  • Une instruction ALTER TABLE avec la clause ALTER COLUMN SET DATA TYPE ne doit pas spécifier VARBINARY ou BINARY pour le nouveau type de données lorsque les deux conditions suivantes sont vraies :
    1. La colonne est une colonne de clé de partitionnement.
    2. Le type de données existant est CHAR ou VARCHAR FOR BIT DATA.
  • Une table de requête matérialisée ne peut pas être clonée pour ALTER TABLE.
  • La table de résultats du fullselect dans la clause as-result-table d’une instruction CREATE TABLE inclut des données codées avec différents ensembles de CCSID. La table de résultats ne doit pas utiliser plusieurs ensembles de CCSID.
  • La limite interne de 30 000 octets pour le descripteur d’objet versionné (OBD) a été dépassée. Cette condition peut se produire lorsqu’une instruction de table ALTER génère une nouvelle version de table ou une nouvelle version d’index, ou est exécutée sur une table versionnée.
  • INLINE LENGTH n’est pas autorisé pour la colonne LOB car l’espace table n’est pas un espace table universel.
  • Une instruction ALTER TABLE a été spécifiée avec une clause ADD PERIOD et un masque de colonne ou une autorisation de ligne est défini pour la table. Une période ne peut pas être ajoutée à une table pour laquelle un masque de colonne ou une autorisation de ligne est défini.
  • La table ou la vue spécifiée dans une clause LIKE ne doit pas contenir de colonne Unicode Db2 11 dans une table EBCDIC.
  • Une instruction ALTER TABLE ne doit pas spécifier de clause ADD PARTITION BY RANGE si la table est EBCDIC et qu’elle contient une colonne Db2 11 Unicode.
  • Une instruction ALTER TABLE ne doit pas spécifier de clause IMPLICITLY HIDDEN dans une clause ADD COLUMN pour une colonne définie en tant que ROWID ou un type distinct basé sur un ROWID.
  • Une instruction ALTER TABLE ou CREATE TABLE qui définit une colonne d’expression générée doit spécifier le même type de données que le type de résultat de l’expression. Pour une colonne définie comme DATA CHANGE OPERATION, CHAR(1) doit être spécifié comme type de données.
  • Une instruction CREATE TABLE ne doit pas contenir de clause LIKE ni de clause IN ACCELERATOR.
  • Une instruction CREATE TABLE ne doit pas contenir de clause LIKE faisant référence à une table d’accélérateur uniquement.
  • Une instruction CREATE TABLE ne doit pas contenir de clause AS fullselect ni de clause IN ACCELERATOR.
  • Une instruction CREATE TABLE ne doit pas contenir de clause AS fullselect où fullselect fait référence à une table d’accélérateur uniquement.
  • Une instruction CREATE TABLE ne doit pas contenir de définition de requête matérialisée ni de clause IN ACCELERATOR.
  • Une instruction CREATE ou ALTER TABLE ne doit pas définir de colonne Unicode dans une table EBCDIC si la table est une table d’accélérateur uniquement.
  • CREATE TABLE avec PAGENUM RELATIVE ou dans un espace table avec PAGENUM RELATIVE doit avoir des lignes avec une taille de données minimale de 3 octets.
  • Une instruction ALTER TABLE ou CREATE TABLE ne doit pas spécifier de clause KEY LABEL pour une table dans un espace table multi-tables. Si la table réside dans un espace table à plusieurs tables, envisagez d’utiliser la spécification d’étiquette de clé au niveau du groupe de stockage.

IALTER TABLE ALTER COLUMN SET DATATYPE statement

  • La modification du type de données d’une colonne dans une table avec PAGENUM RELATIVE n’est pas autorisée si la taille minimale des données d’une ligne est inférieure à 3 octets.

ALTER TABLE DROP COLUMN statement

  • La suppression d’une colonne dans une table avec PAGENUM RELATIVE n’est pas autorisée si la taille minimale des données d’une ligne est inférieure à 3 octets.

ALTER TABLESPACE statements

  • Un ALTER TABLESPACE DSSIZE et un ALTER TABLESPACE PART DSSIZE ne peuvent pas être spécifiés tous les deux dans la même instruction.
  • Un ALTER TABLESPACE PAGENUM RELATIVE n’est pas autorisé lorsque l’espace table contient une table dans laquelle la taille minimale des données de la ligne est inférieure à 3 octets.

CREATE GLOBAL TEMPORARY TABLE statements

  • La table table ou view spécifiée dans une clause LIKE ne doit pas contenir de colonne Unicode Db2 11 dans une table EBCDIC.

DECLARE GLOBAL TEMPORARY TABLE statements

  • La table de résultats du fullselect dans la clause as-result-table d’une instruction DECLARE GLOBAL TEMPORARY TABLE inclut des données codées avec différents ensembles de CCSID. La table de résultats ne doit pas utiliser plusieurs ensembles CCSID, autres que EBCDIC et Unicode.
  • Une colonne BINARY ou VARBINARY ne peut pas être spécifiée dans une clé de partitionnement.
  • La table table ou view spécifiée dans une clause LIKE ne doit pas contenir de colonne Unicode Db2 11 dans une table EBCDIC.
  • La clause LIKE d’une DECLARE GLOBAL TEMPORARY TABLE ne doit pas faire référence à une table d’accélérateur uniquement.

CREATE FUNCTION statements

  • Une instruction CREATE FUNCTION ne doit pas tenter de définir une fonction de table SQL avec l’un des éléments suivants :
  • Un corps de fonction qui référence une colonne définie avec une procédure de champ
  • Une clause RETURNS qui fait référence à une colonne définie avec une procédure de champ.

CREATE MASK statements

  • Une instruction CREATE MASK ne doit pas définir de masque pour une table d’accélérateur uniquement.

CREATE PERMISSION statements

  • Une instruction CREATE PERMISSION ne doit pas définir d’autorisation de colonne pour une table d’accélérateur uniquement.

CREATE PROCEDURE statement

  • Une instruction CREATE PROCEDURE ne doit pas être utilisée pour ajouter ou remplacer une version d’une procédure obscurcie.

CREATE VARIABLE statements

  • Une instruction CREATE VARIABLE ne peut pas spécifier une valeur par défaut des registres spéciaux CURRENT TEMPORAL SYSTEM_TIME ou CURRENT TEMPORAL BUSINESS_TIME.

CREATE VIEW or ALTER VIEW REGENERATE statements

  • Toutes les vues et fonctions SQL référencées dans une définition de vue doivent avoir le même mode d’arrondi que la vue en cours de définition. Les fonctions SQL qui ont des informations de mode d’arrondi non définies sont ignorées lors de la vérification du mode d’arrondi.

FETCH statements

  • Une instruction FETCH ne peut pas inclure WITH CONTINUE ou CURRENT CONTINUE dans une routine SQL.

GET DIAGNOSTICS statements

  • Le mot clé STACKED ne peut pas être spécifié pour une instruction GET DIAGNOSTICS dans une routine SQL externe. Le mot clé STACKED n’est pris en charge que dans une routine SQL native.

MERGE statements

  • Une colonne de la table source est référencée plusieurs fois dans une opération de modification de l’instruction MERGE. Lorsque des indicateurs étendus sont actifs, une colonne de la table source ne doit pas être référencée plus d’une fois dans une opération de modification. Une opération de modification est une opération de mise à jour ou une opération d’insertion. Les indicateurs étendus sont en vigueur lorsque EXTENDEDINDICATOR(YES) est utilisé ou lorsque l’attribut de préparation WITH EXTENDED INDICATORS est spécifié pour l’instruction MERGE.
  • La conditionsearch-condition  de la clause ON d’une instruction MERGE ne doit pas inclure un prédicat IN qui inclut un fullselect, ou un prédicat quantifié qui inclut un fullselect.
  • La condition matching-condition de la clause WHEN MATCHED ou WHEN NOT MATCHED d’une instruction MERGE ne doit pas inclure un prédicat IN qui inclut un fullselect, ou un prédicat quantifié qui inclut un fullselect.
  • Une instruction MERGE qui contient une opération de suppression ne peut pas être utilisée comme data-change-table-reference dans la clause FROM de la clause SELECT externe d’un fullselect.

TRIGGER statements

  • Une instruction CREATE TRIGGER ne doit pas spécifier une vue qui possède l’un des types de colonnes suivants :
    1. Colonnes ROWID
    2. Colonnes LOB
    3. Colonnes XML
    4. Défini (directement ou indirectement) en tant que colonnes d’identité
    5. Colonnes d’étiquettes de sécurité
    6. Colonnes d’horodatage de changement de ligne
    7. Colonnes de début de ligne
    8. Colonnes de fin de ligne
    9. Colonnes ID de début de transaction
    10. Expressions
    11. Colonnes des tableaux de résultats qui impliquent des opérateurs ensemblistes
  • Une instruction CREATE [ou ALTER] TRIGGER ne doit pas référencer une table d’accélérateur uniquement dans le corps du déclencheur.
  • Une instruction CREATE TRIGGER avec la clause INSTEAD OF spécifiée ne doit pas référencer une vue qui référence une table d’accélérateur uniquement dans le corps du déclencheur.
  • La variable de transition spécifiée ne prend pas en charge XML.
  • Une instruction CREATE TABLE dans le corps d’un déclencheur ne doit pas définir une colonne en tant que LOB ou XML.
  • La chaîne d’instruction pour une instruction PREPARE ne doit pas être une instruction ALLOCATE CURSOR si l’instruction PREPARE est émise dans le corps d’un déclencheur.
  • Une instruction ALTER TRIGGER (de base) ne doit pas spécifier une option autre que SECURED ou NOT SECURED.
  • Une instruction ALTER TRIGGER (avancée) ne peut être préparée que dynamiquement.
  • Une instruction CREATE TRIGGER (avancé) ou ALTER TRIGGER (avancé) ne peut pas être traitée comme une instruction statique.
  • Un déclencheur obscurci ne peut pas être modifié.

UPDATE statements:

Certaines instructions UPDATE qui modifient les données dans une colonne pour laquelle un déclencheur BEFORE UPDATE est défini peuvent entraîner ce code dans certaines circonstances.

Si une instruction BEFORE UPDATE TRIGGER contient une clause SET pour une ou plusieurs colonnes qui participent à l’index du chemin d’accès, l’exécution de l’instruction BEFORE UPDATE TRIGGER peut entraîner une nouvelle qualification de la ligne. Cette situation se produit lorsque toutes les conditions suivantes sont remplies :

  • DB2 utilise un chemin d’accès à l’index pour localiser les lignes pouvant être mises à jour.
  • Un BEFORE TRIGGER existe sur la table à laquelle appartiennent les lignes.
  • Le BEFORE TRIGGER met à jour les valeurs d’une ou plusieurs colonnes qui participent à l’index du chemin d’accès.

Cette situation peut se produire à la fois avec les mises à jour recherchées et les mises à jour positionnées (mises à jour qui utilisent l’instruction UPDATE WHERE CURRENT OF CURSOR). Ce code est émis pour les instructions sensibles à ce problème, même si les données impliquées dans la mise à jour ne provoqueraient pas de requalification. Voir Réponse du programmeur pour plus d’informations sur la gestion des erreurs de requalification.

Autres restrictions pour les instructions SQL :

  • Les vues et les fonctions SQL référencées dans une instruction SQL doivent avoir le même mode d’arrondi que l’instruction SQL. Les vues et les fonctions SQL qui ont des informations de mode d’arrondi non définies sont ignorées lors de la vérification du mode d’arrondi.
  • Dans une sous-sélection, la liste de sélection ne peut pas contenir de colonne XML si OLD TABLE est spécifié.
  • La fonction intégrée RID et l’expression ROW CHANGE TOKEN ne doivent pas être spécifiées dans une sous-sélection lorsque cette sous-sélection inclut directement l’un des opérateurs suivants :
    • LEFT OUTER JOIN
    • RIGHT OUTER JOIN
    • FULL OUTER JOIN
  • L’expression ROW CHANGE TIMESTAMP peut être spécifiée uniquement dans une sous-sélection lorsque les conditions suivantes sont vraies :
    • Cette sous-sélection inclut directement un opérateur LEFT OUTER JOIN, RIGHT OUTER JOIN ou FULL OUTER JOIN.
    • L’indicateur de table identifie une table de base qui contient une colonne d’horodatage de changement de ligne.
    • Une fonction de table SQL ne doit pas être appelée avec une expression dérivée d’une colonne définie avec une procédure de champ.
  • Un argument d’entrée pour une fonction de table SQL ne doit pas contenir de sélection complète scalaire, de fonction ou de référence de colonne, que ce soit directement ou dans le cadre d’une expression.
  • Aucune combinaison de ARRAY_AGG, LISTAGG ou XMLAGG ne peut être spécifiée ensemble dans la même instruction.
  • L’instruction SQL inclut une utilisation de UNNEST et un argument de l’opérateur UNNEST est un appel de fonction de tableau qui inclut une référence à une colonne. Un argument d’appel de fonction de tableau ne doit pas inclure de référence à une colonne d’une expression de table commune.
  • Une requête ou une instruction SELECT INTO, INSERT, UPDATE, DELETE ou MERGE ne doit pas référencer des tables ou des vues qui incluent à la fois des périodes BUSINESS_TIME inclusivement et des périodes BUSINESS_TIME inclusives.
  • Dans une instruction DELETE ou UPDATE, une clause FROM expression1 TO expression2 ne doit pas être spécifiée pour une période inclusive-inclusive.
  • Dans une instruction DELETE ou UPDATE, une clause BETWEEN expression1 AND expression2 ne doit pas être spécifiée pour une période inclusive-exclusive.

BIND PACKAGE command

Une commande BIND PACKAGE avec l’option DEPLOY ne doit pas être spécifiée dans les situations suivantes :

  • Un package pour une routine qui est obscurcie.
  • Package d’une version d’une procédure pour laquelle l’instruction CREATE PROCEDURE contient une clause OR REPLACE ou SPECIFIC.

Action du système :
L’instruction ne peut pas être traitée.

Réponse du programmeur :
Corrigez la syntaxe et soumettez à nouveau l’instruction. Pour les erreurs suivantes, effectuez les actions spécifiées.

Erreurs causées par un type de données XML
Si cette erreur est causée par un type de données XML, saisissez les données XML dans l’une des fonctions qui acceptent les entrées XML. Stockez la sortie de la fonction dans la base de données ou renvoyez-la à l’application.
Erreurs causées par le mode d’arrondi
Si cette erreur est causée par différents modes d’arrondi, effectuez l’une des actions suivantes :

Si une vue ou une fonction SQL a un mode d’arrondi différent de celui de l’instruction SQL de référence :
Modifiez l’instruction SQL ou modifiez le mode d’arrondi en vigueur pour vous assurer que toutes les vues ou fonctions SQL référencées ont le même mode d’arrondi que l’instruction SQL. Une nouvelle vue, une fonction SQL ou les deux peuvent être nécessaires pour correspondre au mode d’arrondi de l’instruction SQL.

Si une vue ou une fonction SQL a un mode d’arrondi différent de la vue de référencement lors de l’exécution de CREATE VIEW :
Modifiez la définition de la vue ou modifiez le mode d’arrondi en vigueur pour vous assurer que toutes les vues ou fonctions SQL référencées ont le même mode d’arrondi que la vue de référencement. Une nouvelle vue, une fonction SQL ou les deux peuvent être nécessaires pour correspondre au mode d’arrondi de la vue de référencement.

Si une vue ou une fonction SQL a un mode d’arrondi différent de la vue de référencement lors de l’exécution de ALTER VIEW REGENERATE :
Modifiez le mode d’arrondi en vigueur pour vous assurer que toutes les vues ou fonctions SQL référencées ont le même mode d’arrondi que la vue de référencement. La vue pour ALTER VIEW REGENERATE peut toujours échouer. Dans ce cas, supprimez et recréez la vue avec une définition de vue différente qui fait référence à une nouvelle vue ou fonction SQL.

Erreurs causées par la requalification des données
Si le problème est dû à la requalification des données définie par une instruction BEFORE UPDATE TRIGGER, effectuez l’une des actions suivantes :

  • Assurez-vous que les colonnes modifiées par le déclencheur sont également modifiées par l’instruction UPDATE elle-même. Modifiez l’instruction UPDATE pour inclure une clause factice du type ncolumn-name=column-name pour chaque colonne que le BEFORE UPDATE TRIGGER modifie.
  • Rebind avec des astuces pour que le chemin d’accès RIDLIST utilise le même index.

Erreurs causées par la taille de l’OBDREC
Si la taille de l’OBDREC dépasse 30 000 octets, vous pourrez peut-être récupérer de l’espace dans l’OBD en réduisant la taille de la valeur par défaut pour les colonnes de longueur variable, le cas échéant.

ETATSQL :
42997