AN EXPRESSION IN THE FOLLOWING POSITION, OR STARTING WITH position-or-expression-start IN THE clause-type CLAUSE IS NOT VALID. REASON CODE = reason-code
Explication :
L’expression identifiée par la première partie de l’expression expression-start dans la clause clause-type n’est pas valide pour la raison spécifiée par le reason-code comme suit :
1
Le fullselect de l’instruction select n’est pas une sous-sélection. Les expressions ne sont pas autorisées dans la clause ORDER BY pour ce type d’instruction select. Ce code anomalie se produit uniquement lorsque le clause-type est ORDER BY.
2
DISTINCT est spécifié dans la clause SELECT, et un nom de colonne ou une sort-key-expression dans la clause ORDER BY ne peut pas correspondre exactement à un nom de colonne ou une expression dans la liste de sélection. Ce code anomalie se produit uniquement lorsque le clause-type est ORDER BY.
3
La liste de sélection comprend une fonction d’agrégat ou la sous-sélection comprend une clause GROUP BY et l’expression n’est pas une fonction d’agrégat ou ne correspond pas exactement à une expression de la liste de sélection.
4
Le regroupement est provoqué par la présence d’une fonction d’agrégat dans la clause ORDER BY. Ce code anomalie se produit uniquement lorsque le clause-type est ORDER BY.
5
L’expression dans une clause GROUP BY ne peut pas contenir de scalaire-fullselect. Ce code anomalie se produit uniquement lorsque le clause-type est GROUP BY.
6
Utilisation non valide de scalar-fullselect. Ce code anomalie peut être émis lorsque le scalar-fullselect apparaît dans une clause ORDER BY, l’instruction RETURN d’une fonction SQL contient un scalar-fullselect ou un scalar-fullselect est passé en tant qu’argument sur une instruction CALL pour un paramètre qui est défini comme paramètre d’entrée (IN).
8
DISTINCT est spécifié dans la fonction LISTAGG et la première expression d’argument ne peut pas correspondre exactement à la première expression de clé de tri de ORDER BY spécifiée dans la clause WITHIN GROUP. Ce code anomalie se produit uniquement lorsque le clause-type est ORDER BY.
Action du système :
L’instruction ne peut pas être traitée.
Réponse du programmeur :
Modifiez l’instruction select en fonction de la raison spécifiée par le code de raison. Utilisez les suggestions suivantes pour modifier l’instruction select :
1
Supprimez l’expression de la clause ORDER BY. Si vous essayez de référencer une colonne du résultat, remplacez la clé de tri par la forme simple-integer ou simple-column-name. Pour plus d’informations, consultez le diagramme de syntaxe ORDER BY dans order-by-clause.
2
Supprimez DISTINCT de la clause SELECT.
3
Remplacez l’expression de la clause ORDER BY ou GROUP BY par une fonction d’agrégat ou modifiez la clause pour utiliser un identificateur de colonne numérique ou un nom de colonne.
4
Ajoutez une clause GROUP BY ou supprimez la fonction d’agrégat de la clause ORDER BY.
5
Supprimez le fullselect scalaire de la clause GROUP BY.
6
Supprimez le scalaire fullselect de l’instruction.
8
Lorsque DISTINCT est spécifié dans la fonction LISTAGG, assurez-vous que ORDER BY est spécifié et que la première expression de clé de tri correspond à l’argument de LISTAGG.
ETATSQL :
42822