Tous les articles par Mr COBOL

CODE RETOUR -593

NOT NULL MUST BE SPECIFIED FOR column-name BECAUSE IT IS DEFINED AS A ROWID (OR DISTINCT TYPE FOR ROWID), ROW CHANGE TIMESTAMP COLUMN, ROW BEGIN COLUMN, ROW END COLUMN, OR COLUMN OF A PERIOD column-name

Explication
La clause NOT NULL a été spécifiée pour une colonne dont le type n’autorise pas les valeurs NULL.

column-name
Le nom de la colonne qui requiert la clause NOT NULL.
Les colonnes suivantes n’autorisent pas les valeurs nulles :

  • Colonnes ROWID
  • Colonnes de type distinct pour lesquelles le type de source est ROWID
  • Colonnes timestamp de changement de ligne
  • Colonnes de début de ligne et colonnes de fin de ligne
  • Colonnes d’une période

Lorsqu’une de ces colonnes est définie dans une instruction CREATE TABLE, ALTER TABLE ou DECLARE TABLE, la clause NOT NULL doit être spécifiée pour la colonne.

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

Réponse du programmeur
Modifiez l’instruction pour spécifier la clause NOT NULL.

SQLSTATE
42831

CODE RETOUR -592

NOT AUTHORIZED TO CREATE OR ALTER FUNCTIONS, PROCEDURES, OR TRIGGERS IN WLM ENVIRONMENT env-name

Explication
Ce message est émis lorsque la vérification de l’autorisation de l’environnement d’application WLM dans le jeton env-name a échoué.

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

Réponse du programmeur
Pour corriger l’erreur, choisissez une valeur différente pour le mot clé ENVIRONNEMENT WLM ou demandez à l’administrateur système l’autorisation de créer des objets dans l’ENVIRONNEMENT WLM spécifié. Ensuite, réexécutez l’instruction SQL.

SQLSTATE
42510

CODE RETOUR -590

NAME name IS NOT UNIQUE IN THE CREATE OR ALTER FOR ROUTINE OR TRIGGER object-name

Explication
Le nom spécifié pour un paramètre, une variable SQL, un curseur, une étiquette ou une condition dans une instruction CREATE ou ALTER pour une routine ou un déclencheur avancé n’est pas unique.

name
Le nom de l’élément qui n’est pas unique dans la routine ou le déclencheur.
object-name
Le nom de la routine ou du déclencheur qui contient les noms d’éléments en double.

La valeur de name doit respecter les règles suivantes :

  • Un nom de paramètre doit être unique dans la liste de paramètres.
  • Un nom de variable SQL doit être unique dans l’instruction composée dans laquelle il est déclaré, à l’exclusion de toute déclaration dans les instructions composées imbriquées dans l’instruction composée qui déclare la variable SQL.
  • Un nom de variable SQL ne doit pas être le même qu’un nom de paramètre.
  • Un nom de curseur doit être unique dans la routine ou le déclencheur dans lequel il est déclaré, à l’exclusion de toute déclaration dans les instructions composées imbriquées dans l’instruction composée qui déclare le curseur.
  • Un nom de condition doit être unique dans l’instruction composée dans laquelle il est déclaré, à l’exclusion de toute déclaration dans les instructions composées imbriquées dans l’instruction composée qui déclare la condition.
  • Une étiquette doit être unique dans une instruction composée, y compris toutes les étiquettes dans les instructions composées qui sont imbriquées dans l’instruction composée qui définit l’étiquette.

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

Réponse du programmeur
Modifiez le nom pour qu’il soit unique.

SQLSTATE
42734

CODE RETOUR -589

A POSITIONED DELETE OR UPDATE STATEMENT FOR CURSOR cursor-name SPECIFIED A ROW OF A ROWSET, BUT THE CURSOR IS NOT POSITIONED ON A ROWSET

Explication
La clause FOR ROW n OF ROWSET a été spécifiée sur une instruction DELETE ou UPDATE positionnée, mais le curseur n’est actuellement pas positionné sur un ensemble de lignes.

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

Réponse du programmeur
Exécutez une instruction FETCH pour positionner le curseur sur l’ensemble de lignes correct, puis réexécutez l’instruction DELETE ou UPDATE positionnée. Si le curseur n’est pas défini pour l’accès à l’ensemble de lignes, redéfinissez d’abord le curseur.

SQLSTATE
24520

CODE RETOUR -586

THE TOTAL LENGTH OF THE CURRENT PATH SPECIAL REGISTER CANNOT EXCEED 2048 CHARACTERS

Explication
Le registre spécial CURRENT PATH est défini comme un VARCHAR (2048). Le contenu de la chaîne comprend chaque nom de schéma délimité par des guillemets doubles et séparé du nom de schéma suivant par une virgule. La longueur totale de la chaîne de tous les noms de schéma dans CURRENT PATH ne peut pas dépasser 2048 caractères. Une instruction SET PATH provoquant ce message dépasserait cette limite.

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

Réponse du programmeur
Supprimez les noms de schéma pour réduire la longueur totale afin qu’elle corresponde à la longueur maximale de 2 048 caractères. Si tous les noms de schéma sont requis, il peut être nécessaire de consolider certaines fonctions définies par l’utilisateur afin que moins de noms de schéma soient requis pour le CURRENT PATH.

SQLSTATE
42907

CODE RETOUR -585

THE COLLECTION collection-id APPEARS MORE THAN ONCE IN THE SET special-register STATEMENT

Explication
L’instruction SET pour le registre spécial special-register inclut collection-id plus d’une fois.

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

Réponse du programmeur
Supprimez les occurrences en double de collection-id de l’instruction SET pour le registre spécial.

SQLSTATE
42732

CODE RETOUR -584

INVALID USE OF NULL OR DEFAULT

Explication
Le mot clé NULL ou DEFAULT n’est pas valide comme spécifié. L’une des situations d’erreur suivantes s’est produite :

  • Le mot clé NULL a été utilisé dans la clause USING source-table de l’instruction MERGE, mais le mot clé NULL n’a pas été explicitement converti en un type de données pris en charge.
  • Dans une instruction d’affectation SET, DEFAULT a été affecté à une variable autre qu’une variable globale.
  • Une instruction CREATE VARIABLE a été utilisée pour définir une variable globale en tant que type de tableau. La constante DEFAULT ou la clause special-register DEFAULT a été spécifiée dans l’instruction CREATE VARIABLE. Seul DEFAULT NULL est autorisé.
  • Le mot clé DEFAULT a été spécifié comme valeur source pour une variable de transition dans une instruction d’affectation SET qui affecte des valeurs à plusieurs cibles, et soit toutes les cibles n’étaient pas des variables de transition, soit toutes les valeurs source n’étaient pas spécifiées avec le DEFAULT mot-clé.

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

Réponse de l’utilisateur
Effectuez l’une des actions suivantes :

  • Spécifiez le mot clé NULL dans une expression CAST lorsque vous utilisez NULL dans la clause USING VALUES de l’instruction MERGE.
  • N’affectez DEFAULT à aucune variable autre qu’une variable globale.
  • Dans une instruction CREATE VARIABLE utilisée pour définir une variable globale en tant que type tableau, n’affectez pas la constante DEFAULT ou le special-register DEFAULT à la variable globale.
  • N’affectez pas DEFAULT à une variable de transition dans une instruction d’affectation SET qui affecte des valeurs à plusieurs cibles si toutes les cibles ne sont pas des variables de transition ou si toutes les valeurs source ne sont pas spécifiées comme mot clé DEFAULT. Remplacez l’instruction d’affectation unique par des instructions d’affectation distinctes.

SQLSTATE
42608

CODE RETOUR -583

THE USE OF FUNCTION OR EXPRESSION name IS INVALID BECAUSE IT IS NOT DETERMINISTIC OR HAS AN EXTERNAL ACTION

Explication
La fonction name est défini comme une fonction non déterministe ou une fonction avec une action externe, ou l’expression name est défini comme une expression non déterministe. Ce type de fonction ou d’expression n’est pas pris en charge dans le contexte dans lequel il est utilisé. Les contextes dans lesquels ceux-ci ne sont pas valides sont :

  • Dans l’expression précédant le premier mot-clé WHEN dans une expression simple.
  • Dans la clause WHERE du fullselect dans une instruction CREATE VIEW si l’OPTION WITH CHECK est spécifiée.
  • Dans une expression d’une clause ORDER BY
  • Dans une expression-clé d’une définition d’index
  • Dans une expression d’une clause GROUP BY
  • Dans une expression qui génère la valeur d’un index pour un tableau
  • Dans une clause OFFSET ou FETCH FIRST
  • Dans une row-value-expressionsi l’opérateur de comparaison est <, <=, > ou >=

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

Réponse du programmeur
Si l’utilisation d’une fonction ou d’une expression non déterministe ou d’action externe n’était pas prévue, substituez une fonction ou une expression sans ces caractéristiques. Si le comportement associé à la fonction ou à l’expression d’action non déterministe ou externe est intentionnel, utilisez la forme alternative des déclarations qui rendent cette intention explicite.

  • Au lieu d’une simple clause, utilisez la clause-lorsque recherchée correspondante où la fonction ou l’expression serait spécifiée dans chaque condition de recherche.
  • Supprimez l’OPTION WITH CHECK de l’instruction CREATE VIEW.
  • Supprimez la fonction ou l’expression de la clause ORDER BY. Si la colonne fait partie du jeu de résultats de la requête, remplacez l’expression dans la clause ORDER BY par la forme simple-integer ou simple-column-name de la clé de tri.
  • Supprimez la fonction ou l’expression de la clause GROUP BY.
  • Supprimez l’expression qui génère la valeur d’un index pour un tableau.
  • Supprimez l’expression de la clause OFFSET ou FETCH FIRST.
  • Modifiez l’opérateur de comparaison dans row-value-expression ou supprimez la comparaison avec row-value-expression.

SQLSTATE
42845

CODE RETOUR -582

THE SEARCH-CONDITION IN A SEARCHED-WHEN-CLAUSE OF A CASE IS NOT VALID IN THE CONTEXT IN WHICH IT WAS SPECIFIED. THE SEARCH CONDITION CONTAINS A QUANTIFIED PREDICATE OR AN IN PREDICATE THAT INCLUDES A FULLSELECT, AND THESE ARE NOT ALLOWED IN THE SPECIFIED CONTEXT.

Explication
La condition de recherche SEARCH-CONDITION dans une clause recherchée SEARCHED-WHEN-CLAUSE spécifie un prédicat quantifié, un prédicat IN ou un prédicat EXISTS, mais n’est pas autorisée. Cependant, un prédicat IN est autorisé dans une liste de sélection ou une clause VALUES si ce prédicat IN inclut explicitement une liste d’expressions.

La condition de recherche SEARCH-CONDITION dans une clause recherchée SEARCHED-WHEN-CLAUSE spécifie un prédicat quantifié ou un prédicat IN qui inclut un fullselect. Une spécification CASE qui inclut l’un ou l’autre de ces éléments ne peut pas être utilisée dans les contextes suivants :

  • Une liste SELECT
  • Une clause VALUES d’une instruction INSERT ou MERGE
  • Une clause SET ou d’affectation d’une instruction UPDATE, MERGE ou DELETE
  • Le côté droit d’un SET ou d’une instruction d’affectation
  • Un masque de colonne ou une définition d’autorisation de ligne

La condition de recherche SEARCH-CONDITION dans une clause recherchée SEARCHED-WHEN-CLAUSE a spécifié un prédicat EXISTS. Une spécification CASE qui inclut un prédicat EXISTS ne peut pas être utilisée dans les contextes suivants :

  • Une clause VALUES d’une instruction INSERT ou MERGE
  • Le côté droit d’un SET ou d’une instruction d’affectation
  • Le diagnostic-string-expression  d’une instruction SIGNAL
  • Une clause ORDER BY ou une clause GROUP BY

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

Réponse du programmeur
Corrigez les expressions de résultat afin qu’elles soient compatibles.

SQLSTATE
42625

CODE RETOUR -581

THE DATA TYPES OF THE RESULT-EXPRESSIONS OF A CASE EXPRESSION ARE NOT COMPATIBLE

Explication
Il y a une expression CASE dans l’instruction qui a des RESULT-EXPRESSIONS (expressions suivant les mots clés THEN et ELSE) qui ne sont pas compatibles. Le type de données des RESULT-EXPRESSIONS peut être incompatible car les types de données de résultat de la condition CASE ne sont pas tous :

  • caractère
  • graphique
  • numérique
  • Date
  • temps
  • timestamp
  • chaîne binaire
  • type défini par l’utilisateur

S’ils sont encodés en Unicode, les types de données caractères et graphiques sont toutefois compatibles.

Une valeur de tableau avec un type de tableau défini par l’utilisateur ne peut être affectée qu’à une variable de tableau définie comme le même type de tableau défini par l’utilisateur. Les règles d’affectation d’une valeur de tableau sans type de tableau défini par l’utilisateur à une variable de tableau dépendent de l’instruction qui spécifie l’affectation. Voir Affectations de type de tableau pour plus d’informations.

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

Réponse du programmeur
Corrigez les RESULT-EXPRESSIONS afin qu’elles soient compatibles.

SQLSTATE
42804