J'ai une question rapide sur les valeurs par défaut dans les fonctions PL/SQL dans Oracle. Prenez ce programme comme exemple;Oracle Valeurs par défaut
create or replace
FUNCTION testFunction
(
varNumber IN NUMBER DEFAULT 0
)
RETURN NUMBER
AS
BEGIN
dbms_output.put_line(varNumber);
RETURN varNumber;
END;
L'idée étant que si aucune valeur est spécifiée pour varNumber lorsque cette fonction est appelée, il prendra la valeur 0.
Maintenant, mon problème est que mes fonctions sont appelées à partir se une couche de services Web qui passera toujours en NULL comme valeur pour les paramètres pour lesquels elle n'a pas de valeur. Oracle interprète NULL comme une valeur, et n'initialise donc pas varNumber à sa valeur par défaut de 0.
Je peux voir pourquoi cette approche a du sens, mais je me demandais s'il y avait un moyen de contourner ce comportement, et de le faire ainsi que si une valeur NULL est transmise, Oracle attribue la valeur DEFAULT explicite spécifiée dans l'en-tête de la fonction?
J'ai envisagé la possibilité de faire une vérification manuelle ...
IF(varNumber IS NULL) THEN
varNumber := 0;
END IF;
Cependant, il y a des centaines de fonctions lorsque cela peut être un problème, sans parler du grand nombre de paramètres par fonction, etc. Je préférerais que je trouve une solution plus générale au problème.
Bravo pour tout aperçu que vous pouvez donner. Utilisez la NVL pour définir la valeur.