J'essaye de faire un DB2 UDF qui prend une date d'entrée et renvoie une nouvelle date avec quelques mois ajoutés. La syntaxe de requête pour cette étape est d'utiliserDB2 UDF pour renvoyer une date supplémentaire?
select date + 12 months from sysibm.sysdummy1;
l'intérieur de l'UDF, je ne peux pas obtenir ce travail
monthsToAdd INTEGER;
SET monthsToAdd=4;
set result= inputDate + monthsToAdd + MONTHS;
return result;
Il dit
Etat SQL: 42816 Code fournisseur: -182 Message: [SQL0182] Expression de date, d'heure ou d'horodatage non valide. Cause . . . . . : L'un des événements suivants s'est produit: - Un opérande d'addition est une date et l'autre n'est pas une date. - Un opérande d'addition est un temps et l'autre n'est pas une durée. - Un opérande d'addition est un horodatage et l'autre n'est pas une durée. - Un opérande de soustraction est une date et l'autre n'est pas une date, un caractère ou une durée de date. - Un opérande de soustraction est un temps et l'autre n'est pas un temps, un caractère ou une durée. - Un opérande de soustraction est un horodatage et l'autre n'est pas un horodatage, un caractère ou une durée. Récupération . . : Corrigez l'expression arithmétique afin qu'elle contienne une expression de date, d'heure ou d'horodatage valide. Essayez à nouveau la demande.
est l'une erreur Erreur de compilation (pouvez-vous créer la procédure?) ou une erreur d'exécution? Pourriez-vous publier l'intégralité de la procédure de création de procédure? –
N'importe quelle raison pour ne pas simplement utiliser la fonction scalaire DB2 ADD_MONTHS, disponible depuis DB2 pour IBM i 6.1, de janvier 2008; peut-être encore sur v5r4 à l'époque? Pour référence: version plus récente doc sous [IBM i 7.2-> Base de données-> Référence-> Référence SQL-> Fonctions intégrées-> Fonctions scalaires-> ADD_MONTHS] (http://www.ibm.com/support/knowledgecenter /en/ssw_ibm_i_72/db2/rbafzscaaddmonths.htm) – CRPence