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