Archives de catégorie : SQLCODE

CODE RETOUR -633

THE DELETE RULE MUST BE delete-rule

Explication
Le code est utilisé pour signaler que la ” delete-rule ” spécifiée dans une clause FOREIGN KEY de l’instruction ALTER TABLE n’est pas valide. La «  delete-rule  » indiquée est requise car :

  • Une contrainte d’auto-référencement doit avoir une ‘delete-rule‘ de CASCADE ou NO ACTION.
  • La relation entraînerait la suppression de la table connectée à la même table via plusieurs chemins et ces relations doivent avoir la même « delete-rule».
  • Lorsque PERIOD BUSINESS_TIME est spécifié pour une contrainte référentielle temporelle, la ‘delete-rule‘ doit être RESTRICT.

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

Réponse du programmeur
Modifiez la «  delete-rule  » dans la clause FOREIGN KEY.

SQLSTATE
42915

CODE RETOUR -632

THE TABLE CANNOT BE DEFINED AS A DEPENDENT OF table-name BECAUSE OF DELETE RULE RESTRICTIONS

Explication
Ce code est utilisé pour signaler que l’objet d’une instruction ALTER TABLE ne peut pas être défini comme dépendant de la table indiquée car:

  • La relation formerait un cycle qui entraînerait la suppression de la table à elle-même.
  • La relation entraînerait la connexion par suppression de la table à la table indiquée via plusieurs chemins et la règle de suppression de la relation existante est SET NULL.

L’erreur est due aux règles de suppression des relations existantes, et non à la règle de suppression spécifiée dans la clause FOREIGN KEY de l’instruction ALTER TABLE.

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

Réponse du programmeur
Éliminez la clause FOREIGN KEY particulière de l’instruction ALTER ou CREATE TABLE.

SQLSTATE
42915

CODE RETOUR -631

FOREIGN KEY name IS TOO LONG OR HAS TOO MANY COLUMNS

Explication
Ce code est utilisé pour signaler que la somme des attributs de longueur des colonnes identifiées dans la clause FOREIGN KEY indiquée est supérieure à 255 octets ou que le nombre de colonnes identifiées est supérieur à 64. Le ‘nom’ est le nom de contrainte spécifié dans la clause FOREIGN KEY ou, si aucun nom de contrainte n’a été spécifié, le premier nom de colonne spécifié dans la clause.

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

Réponse du programmeur
La définition de la table doit être modifiée pour se conformer à la limite imposée par le système de la somme des attributs de longueur des colonnes identifiées dans la clause PRIMARY KEY.

SQLSTATE
54008

CODE RETOUR -629

SET NULL CANNOT BE SPECIFIED BECAUSE FOREIGN KEY name CANNOT CONTAIN NULL VALUES

Explication
L’option de code SET NULL de la clause FOREIGN KEY indiquée n’est pas valide car aucune colonne de la clé n’autorise les valeurs NULL. Le nom name  est le nom de contrainte spécifié dans la clause FOREIGN KEY ou, si aucun nom de contrainte n’a été spécifié, le premier nom de colonne spécifié dans la clause.

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

Réponse du programmeur
Modifiez une colonne de la clé pour autoriser les valeurs nulles ou modifiez la règle de suppression.

SQLSTATE
42834

CODE RETOUR -628

THE CLAUSES ARE MUTUALLY EXCLUSIVE

Explication
Des clauses mutuellement exclusives ont été spécifiées dans l’instruction SQL. Dans les cas où vous modifiez un objet, une clause a été spécifiée qui entre en conflit avec une propriété existante de l’objet.

Instructions SELECT

  • Une valeur select-statement contient à la fois update-clause et la clause FOR FETCH ONLY.

Instructions CREATE DATABASE

  • Une instruction CREATE DATABASE contient à la fois la clause AS WORKFILE et la clause AS TEMP.

Instructions ALTER FUNCTION ou CREATE FUNCTION

  • Une instruction ALTER FUNCTION pour une fonction définie comme sécurisée a spécifié la clause ADD VERSION ou la clause REPLACE, mais pas la clause SECURED. Lorsqu’une fonction est définie comme sécurisée et qu’une nouvelle version est ajoutée ou qu’une version est remplacée, l’instruction ALTER FUNCTION doit spécifier la clause SECURED.
  • Une instruction CREATE FUNCTION contient à la fois une clause CAST FROM et une clause SOURCE.
  • Une instruction CREATE FUNCTION contient à la fois une clause SOURCE et une clause RETURNS TABLE.
  • Une instruction CREATE FUNCTION contient à la fois une clause SOURCE et une clause utilisée pour définir une fonction externe (telle que EXTERNAL, LANGUAGE ou NO SQL).
  • Une instruction CREATE FUNCTION a été spécifiée avec une clause PARAMETER VARCHAR. Vous pouvez spécifier CREATE FUNCTION avec PARAMETER VARCHAR uniquement si LANGUAGE C est également spécifié.
  • Une instruction CREATE FUNCTION ou ALTER FUNCTION peut contenir la clause CAST FROM uniquement pour les fonctions scalaires externes.
  • Une instruction CREATE FUNCTION ou ALTER FUNCTION a spécifié SCRATCHPAD. SCRATCHPAD ne doit pas être spécifié lorsque LANGUAGE JAVA ou PARAMETER STYLE JAVA est également spécifié pour une fonction.
  • Une instruction CREATE FUNCTION ou ALTER FUNCTION a spécifié FINAL CALL. FINAL CALL ne doit pas être spécifié lorsque LANGUAGE JAVA ou PARAMETER STYLE JAVA est également spécifié pour une fonction.
  • Une instruction CREATE FUNCTION ou ALTER FUNCTION a spécifié LANGUAGE JAVA, LANGUAGE COMPJAVA ou PARAMETER STYLE JAVA, avec DBINFO. DBINFO ne doit pas être spécifié dans ces cas.
  • Une instruction CREATE FUNCTION ou ALTER FUNCTION spécifie LANGUAGE JAVA ou PARAMETER STYLE JAVA, avec RUN OPTIONS. RUN OPTIONS ne doit pas être spécifié dans ces cas.
  • Une instruction CREATE FUNCTION ou ALTER FUNCTION a spécifié PARAMETER STYLE JAVA, mais LANGUAGE JAVA n’a pas été spécifié.
  • Une instruction CREATE FUNCTION ou ALTER FUNCTION a spécifié LANGUAGE JAVA, mais n’a pas spécifié PARAMETER STYLE JAVA.
  • Une instruction CREATE FUNCTION ou ALTER FUNCTION a spécifié RETURNS GENERIC TABLE, mais n’a pas spécifié LANGUAGE C.
  • LA LANGUE JAVA n’est pas autorisée pour les fonctions de table.

Instructions ALTER INDEX ou CREATE INDEX

  • UNIQUE ou UNIQUE WHERE NOT NULL a été spécifié avec PARTITIONED sur CREATE INDEX. Vous ne pouvez pas spécifier UNIQUE ou UNIQUE WHERE NOT NULL avec PARTITIONED sur CREATE INDEX à moins que l’index n’inclue toutes les colonnes de partitionnement.
  • Une instruction CREATE INDEX contient à la fois un GENERATE KEY USING et une colonne spécifiée comme ASC, DESC ou RANDOM.
  • Une instruction CREATE INDEX contient XMLPATTERN et PARTITIONED.
  • Une instruction CREATE INDEX ou ALTER INDEX a tenté de spécifier CLUSTER, PARTITION BY ou les deux pour un index XML ou un index étendu.

Instructions ALTER PROCEDURE ou CREATE PROCEDURE

  • Une instruction CREATE PROCEDURE spécifiait soit FENCED soit EXTERNAL indiquant qu’une procédure SQL externe doit être définie, et l’instruction incluait également une ou plusieurs options qui ne sont autorisées que pour les procédures SQL natives. Par exemple, PACKAGE OWNER peut être spécifié dans l’instruction CREATE PROCEDURE pour une procédure SQL native, mais il n’est pas autorisé pour une procédure SQL externe.
  • Une instruction CREATE PROCEDURE a été spécifiée avec une clause PARAMETER VARCHAR. Vous pouvez spécifier CREATE PROCEDURE avec PARAMETER VARCHAR uniquement si LANGUAGE C est également spécifié.
  • Une instruction CREATE PROCEDURE ou ALTER PROCEDURE a spécifié LANGUAGE JAVA ou PARAMETER STYLE JAVA, avec DBINFO. DBINFO ne doit pas être spécifié dans ces cas.
  • Une instruction CREATE PROCEDURE ou ALTER PROCEDURE a spécifié PARAMETER STYLE JAVA, mais LANGUAGE JAVA n’a pas été spécifié.
  • Une instruction CREATE ou ALTER PROCEDURE a spécifié LANGUAGE JAVA, mais n’a pas spécifié PARAMETER STYLE JAVA.
  • Une instruction CREATE PROCEDURE ou ALTER PROCEDURE a spécifié LANGUAGE JAVA sans AUCUN ENVIRONNEMENT WLM. NO WLM ENVIRONNEMENT ne doit pas être spécifié lorsque LANGUAGE JAVA est également spécifié pour une procédure.
  • Une instruction CREATE PROCEDURE ou ALTER PROCEDURE tente d’utiliser les options NO WLM ENVIRONMENT et PROGRAM TYPE SUB. Lorsque NO WLM ENVIRONNEMENT est utilisé, SECURITY doit également être utilisé.
  • Une instruction CREATE PROCEDURE ou ALTER PROCEDURE tente d’utiliser à la fois NO WLM ENVIRONMENT et USER ou DEFINER pour SECURITY. Lorsque NO WLM ENVIRONNEMENT est utilisé, SECURITY Db2 doit également être utilisé.
  • Une instruction CREATE PROCEDURE ou ALTER PROCEDURE contient à la fois une clause LANGUAGE REXX et une clause PARAMETER STYLE DB2SQL ou PARAMETER STYLE JAVA.
  • Une instruction CREATE PROCEDURE ou ALTER PROCEDURE a spécifié LANGUAGE JAVA ou PARAMETER STYLE JAVA, avec RUN OPTIONS. RUN OPTIONS ne doit pas être spécifié dans ces cas.
  • Une instruction CREATE PROCEDURE ou ALTER PROCEDURE contient une clause DEBUG MODE lorsque ni LANGUAGE JAVA ni LANGUAGE SQL ne sont en vigueur pour la procédure.
  • Une instruction CREATE ou ALTER ADD contient une clause DYNAMIC RESULT SETS et une clause AUTONOMOUS.
  • EXTERNAL NAME a été spécifié sur ALTER PROCEDURE pour une procédure SQL. Vous pouvez tenter la même action en émettant un DROP pour la procédure et en essayant de la reconstruire avec CREATE PROCEDURE.

Instructions ALTER TABLE ou CREATE TABLE

Uniquement pour ALTER TABLE

  • Une instruction ALTER TABLE contient à la fois une clause DROP CONSTRAINT et une clause DROP FOREIGN KEY, DROP CHECK, DROP PRIMARY KEY ou DROP UNIQUE.
  • Une instruction ALTER TABLE contient à la fois une clause ALTER COLUMN et une clause VALIDPROC.
  • Une instruction ALTER TABLE contient à la fois une clause ALTER COLUMN et une clause autre que la clause de contrainte de vérification.
  • Une instruction ALTER TABLE contient une clause ADD MATERIALIZED QUERY ou DROP MATERIALIZED QUERY, ainsi que d’autres clauses.
  • Une instruction ALTER TABLE contient la clause DROP COLUMN avec une autre clause. La clause DROP COLUMN ne peut être utilisée avec aucune autre clause.
  • Une instruction ALTER TABLE contient une clause ENABLE ARCHIVE et une autre clause. La clause ENABLE ARCHIVE ne peut être utilisée avec aucune autre clause.
  • Une instruction ALTER TABLE contient une clause DISABLE ARCHIVE et une autre clause. La clause DISABLE ARCHIVE ne peut être utilisée avec aucune autre clause.
  • Une instruction ALTER TABLE contient à la fois une clause ORGANIZE BY HASH et l’option APPEND.
  • Une instruction ALTER TABLE contient une clause ORGANIZE BY HASH, mais la table n’est pas dans un espace table universel. La clause ORGANIZE BY HASH n’est valide que pour les tables d’un espace table universel.
  • Une instruction ALTER TABLE contient à la fois une clause ADD COLUMN et la syntaxe LONG VARCHAR (ou LONG VARGRAPHIC) pour le type de données d’une table temporelle de période système ou d’une table activée pour l’archivage.
  • Une clause RENAME a été émise avec une autre clause dans une seule instruction ALTER. RENAME ne peut pas être émis avec une autre clause dans une seule instruction ALTER.
  • Une instruction ALTER TABLE contient distinctement au moins deux des clauses suivantes : ALTER COLUMN, ADD PARTITION, ALTER PARTITION et ROTATE PARTITION. Les clauses s’excluent mutuellement, sauf si les clauses ADD PARTITION et ALTER PARTITION sont spécifiées ensemble pour ajouter une nouvelle partition entre des partitions logiques existantes.

Uniquement pour CREATE TABLE

  • Une instruction CREATE TABLE contient à la fois une clause DSSIZE et une clause EVERY integer G.
  • Une instruction CREATE TABLE contient une clause CCSID 1208 pour une colonne VARCHAR ou une clause CCSID 1200 pour une colonne VARGRAPHIC dans une table EBCDIC.
  • Une instruction CREATE TABLE contient à la fois une clause CCSID 1208 ou CCSID 1200 et une clause FIELDPROC.
  • Un espace table explicite ne peut pas être spécifié dans une instruction CREATE TABLE qui spécifie les attributs d’espace table pour un espace table implicite.
  • Rien

Pour ALTER TABLE et CREATE TABLE

  • Une instruction ALTER TABLE ou CREATE TABLE contient une clause ORGANIZE BY HASH, mais la table est définie dans un espace table défini avec l’option MEMBER CLUSTER.
  • Une instruction ALTER TABLE ou CREATE TABLE contient la clause VERSIONING et la clause LIKE.
  • DATA CAPTURE CHANGES pour ALTER TABLE ou CREATE TABLE ne peut être spécifié que pour les tables des espaces table avec l’attribut de journalisation LOGGED.
  • PARTITION BY SIZE a été spécifié avec une clause IN qui a identifié un espace table qui n’est pas défini comme un espace table partition par croissance.
  • Une valeur column-definition contient à la fois les clauses NOT NULL et DEFAULT NULL.
  • Une valeur column-definition contient à la fois les clauses FIELDPROC et DEFAULT.

Instructions ALTER TABLESPACE ou CREATE TABLESPACE

  • Une instruction ALTER TABLESPACE avec la clause ALTER PARTITION contient également la clause DSSIZE. La clause DSSIZE ne peut pas être spécifiée pour un espace table partition par plage non relatif.
  • Une instruction ALTER TABLESPACE contient la clause DROP PENDING CHANGES avec une autre clause. La clause DROP PENDING CHANGES ne peut être utilisée avec aucune autre clause.
  • NOT LOGGED pour ALTER TABLESPACE est mutuellement exclusif avec DATA CAPTURE CHANGES, qui est un attribut d’une ou plusieurs des tables de l’espace table.
  • Une instruction ALTER TABLESPACE contient la clause MOVE TABLE avec une autre clause. La clause MOVE TABLE ne peut être utilisée avec aucune autre clause.
  • Une instruction ALTER TABLESPACE contient la clause PAGENUM avec une autre clause. La clause PAGENUM ne peut être utilisée avec aucune autre clause.
  • Une instruction ALTER TABLESPACE contient la clause SEGSIZE avec une autre clause. La clause SEGSIZE ne peut être utilisée avec aucune autre clause.
  • Une instruction CREATE TABLESPACE a spécifié MAXPARTITIONS et NUMPARTS.
  • Une instruction CREATE TABLESPACE contient à la fois les clauses MAXPARTITIONS et PARTITION.
  • Une instruction CREATE TABLESPACE contient les clauses SEGSIZE et MEMBER CLUSTER sans clause MAXPARTITIONS ou NUMPARTS.
  • Une instruction CREATE TABLESPACE ou ALTER TABLESPACE contient à la fois LOCKPART YES et LOCKSIZE TABLESPACE.
  • Une instruction CREATE TABLESPACE ou ALTER TABLESPACE a spécifié MAXPARTITIONS et LOCKSIZE TABLE.
  • Une instruction CREATE TABLESPACE ou ALTER TABLESPACE contient à la fois une clause ORGANIZE BY HASH et l’option APPEND.
  • Une clause USING VCAT a été spécifiée dans une instruction CREATE TABLESPACE ou ALTER TABLESPACE pour un espace table partition par croissance.

Instructions ALTER TRIGGER ou CREATE TRIGGER

  • Une instruction ALTER ou CREATE TRIGGER spécifie plusieurs noms de corrélation pour OLD, NEW, OLD_TABLE ou NEW_TABLE. Chacune de ces spécifications de corrélation ne peut apparaître qu’une seule fois dans l’instruction ALTER ou CREATE TRIGGER.
  • La clause WHEN ne doit pas être spécifiée pour un déclencheur INSTEAD OF.
  • Deux attributs dans l’instruction ALTER ou CREATE TRIGGER sont en conflit. CREATE TRIGGER (basique) indique quelles combinaisons sont valides. Par exemple, d’après le tableau, FOR EACH STATEMENT ne doit pas être utilisé pour un déclencheur BEFORE ou INSTEAD OF ou avec la clause REFERENCING NEW ROW.

Instructions ALTER TRUSTED CONTEXT

  • Une définition de CONTEXTE DE CONFIANCE a spécifié ATTRIBUTE JOBNAME avec ATTRIBUTE ADDRESS ou SERVAUTH ou ENCRYPTION.

Instructions DECLARE CURSOR

  • Une instruction DECLARE CURSOR spécifie à la fois l’option WITH RETURN TO CLIENT et l’une des options suivantes : WITH RETURN (TO CALLER) ou WITHOUT RETURN.
  • Si INSENSITIVE ou SENSITIVE est spécifié, alors SCROLL doit également être spécifié, soit sur DECLARE CURSOR, soit avec la clause ATTRIBUTES de l’instruction PREPARE.
  • Si SCROLL est spécifié, alors INSENSITIVE ou SENSITIVE STATIC doivent également être spécifiés, soit sur DECLARE CURSOR, soit avec la clause ATTRIBUTES de l’instruction PREPARE.

Instructions DECLARE GLOBAL TEMPORARY TABLE

  • La clause AS (sous-sélection) d’une instruction DECLARE GLOBAL TEMPORARY TABLE contient à la fois une clause INCLUDING COLUMN DEFAULTS et une clause USING TYPE DEFAULTS.

Instructions PREPARE 

  • Si INSENSITIVE ou SENSITIVE est spécifié, alors SCROLL doit également être spécifié, soit sur DECLARE CURSOR, soit avec la clause ATTRIBUTES de l’instruction PREPARE.
  • Si SCROLL est spécifié, alors INSENSITIVE ou SENSITIVE STATIC doivent également être spécifiés, soit sur DECLARE CURSOR, soit avec la clause ATTRIBUTES de l’instruction PREPARE.
  • La valeur attribute-string spécifiée dans la clause ATTRIBUTES de l’instruction PREPARE ne peut pas spécifier d’options en conflit.

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

Réponse du programmeur
Passez en revue les options autorisées pour la déclaration que vous souhaitez émettre, modifiez les options spécifiées dans la déclaration et réémettez la déclaration.

SQLSTATE
42613

CODE RETOUR -627

THE ALTER STATEMENT IS INVALID BECAUSE THE TABLE SPACE OR INDEX HAS USER-MANAGED DATA SETS

Explication
Cette erreur est émise pour les raisons suivantes :

  • Une instruction CREATE ou ALTER a spécifié une clause PRIQTY, SECQTY ou ERASE, USING STOGROUP n’a pas été spécifié et l’espace table ou l’index contient des ensembles de données gérés par l’utilisateur. L’allocation d’espace primaire et secondaire d’un ensemble de données gérées par l’utilisateur ne peut pas être modifiée au moyen d’une instruction ALTER.
  • Une instruction ALTER a tenté de définir une table clone pour une table de base qui se trouve dans un espace table contenant des ensembles de données gérés par l’utilisateur. Une table clonée ne peut pas être définie pour une table de base qui se trouve dans un espace table contenant des ensembles de données gérés par l’utilisateur.
  • Une instruction CREATE TABLE ou ALTER TABLE a spécifié une clause KEY LABEL. Un ou plusieurs ensembles de données sous-jacents pour l’espace table qui contient la table ou un index sur la table sont des ensembles de données gérés par l’utilisateur. La spécification d’étiquette de clé pour un ensemble de données géré par l’utilisateur ne peut pas être modifiée. Cela inclut également les ensembles de données pour les objets associés qui contiennent les données de la table, tels que les espaces table auxiliaires, les espaces table XML, les espaces d’index et les espaces table clone.

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

Réponse du programmeur
Vérifiez que la table, l’index ou la partition corrects est spécifié.

SQLSTATE
55016

CODE RETOUR -626

THE ALTER STATEMENT IS NOT EXECUTABLE BECAUSE THE PAGE SET IS NOT STOPPED

Explication
Une instruction ALTER spécifie une clause ADD PART, USING, PRIQTY, SECQTY, ERASE ou GBPCACHE, mais l’ensemble de pages n’est pas arrêté.

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

Réponse du programmeur
Arrêtez l’ensemble de pages et soumettez à nouveau l’instruction.

SQLSTATE
55015

CODE RETOUR -625

TABLE table-name DOES NOT HAVE AN INDEX TO ENFORCE THE UNIQUENESS OF THE PRIMARY OR UNIQUE KEY

Explication
L’instruction ALTER TABLE n’est pas valide pour l’une des raisons suivantes :

  • La table n’a pas d’index unique avec une clé identique à la clé primaire ou unique désignée.
  • Un index unique existe, mais l’index est déjà utilisé pour appliquer des contraintes référentielles. Dans ce cas, Db2 ne choisit pas l’index pour appliquer la clé primaire ou unique.

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

Réponse du programmeur
Assurez-vous que la liste de clés spécifiée dans l’instruction ALTER TABLE identifie un index unique existant de la table qui n’applique pas déjà des contraintes référentielles.

SQLSTATE
55014

CODE RETOUR -624

TABLE table-name ALREADY HAS A PRIMARY KEY OR UNIQUE CONSTRAINT WITH SPECIFIED COLUMNS AND PERIODS

Explication
Une instruction ALTER TABLE ne peut pas être traitée pour l’une des raisons suivantes :

  • La table a déjà une clé primaire.
  • La table a une contrainte unique existante avec la même définition que la nouvelle clé. (L’ensemble existant de colonnes et de périodes est spécifié dans l’instruction ALTER.)

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

Réponse du programmeur
N’essayez pas de définir une table avec plusieurs clés primaires ou une contrainte d’unicité qui duplique la définition d’une contrainte d’unicité existante.

SQLSTATE
42889

CODE RETOUR -623

CLUSTER IS NOT VALID FOR table-name

Explication
Une table ne peut avoir qu’un seul index de cluster et l’organisation de hachage ne peut pas être utilisée lorsqu’une table a un index de cluster.

table-name
Le nom de la table.

L’option CLUSTER ne peut pas être spécifiée pour l’une des raisons suivantes :

  • Une instruction CREATE INDEX a tenté de créer un index de cluster sur la table spécifiée, mais un index de cluster existe déjà sur la table.
  • Une instruction ALTER INDEX a spécifié la clause CLUSTER, mais il existe déjà un index de clustering défini pour la table.

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

Réponse du programmeur
Vérifiez pour déterminer l’identité et la validité de l’index de cluster existant ou l’utilisation de l’organisation de hachage avec la table d’objets. Vous pouvez également envisager de créer l’index sans l’attribut CLUSTER.

SQLSTATE
55012