• # Re: Fonction qui vérifie la date ou retourne NULL ou DEFAULT s

    Posté par . En réponse au message Fonction qui vérifie la date ou retourne NULL ou DEFAULT s. Évalué à 2. Dernière modification le 07 juillet 2016 à 18:19.

    Car j'ai un problème avec SQL qui me sort l'erreur suivante: ORA-01848: day of year must be between 1 and 365 (366 for leap year)

    Peut-on voir le code en question ou l'endroit qui génère l'erreure ?

    DECODE(DATASTREAM.P1EFTJ,0,0,to_number(to_char(user::jdatetimeToCalendar(DATASTREAM.P1EFTJ),'YYYYMMDD')))

    Je te suggère d'utiliser les conversions standards, i.e. CAST AS, ça te fera déjà un oracle-isme de moins... Btw, je reste dubitatif quant à la pertinence de faire une conversion to_char -> to number. Ne serait-il pas mieux d'utiliser TRUNC(date) voir, mieux, EXTRACT qui est standardisé SQL ?

    Ce que je souhaiterai c'est dire à cette fonction que lorsque le jour n'est pas compris entre 1 et 366

    Utilise CASE WHEN cond THEN ... [WHEN cond2 THEN ...] END à la place de ton DECODE, cf.
    http://docs.oracle.com/cd/B19306_01/server.102/b14200/expressions004.htm .

    PS: J'essayerais d'éviter un maximum les oracle-ismes. Là pluspart du temps il existe un fonction SQL équivalente: genre NVL -> COALESCE, TRUNC -> EXTRACT, CAST, etc. La doc de postgresql est très pratique pour cela :p