• Contact
  • Annonceurs

AURELIENPI.AT

Anything but the web !

  • Toutes les Archives
  • Blog
    • Wiki Technique
    • RDW
    • Panoramiques
    • Musique
  • Photos
  • Voyages

Tester le type de colonne dans une vue ou une table (Oracle / Php)

0
  • by Aurélien PIAT
  • in Wiki Technique
  • — 16 Juin, 2011

Lorsque vous utilisez beaucoup les vues et que celles ci sont très utilisées pour l’édition de rapport par dérrière (reporting, décisionnel, marketing, etc.), souvent le type de variable peut poser problème car incompatible. Dans ce cas si la colonne d’une vue est amenée à évoluer en terme ‘d’alimentation’ de donnée vous pouvez générer des erreurs non pas au sein de la vue (pas sur la couche base de données) mais au niveau applicatif (outils dépendant et/ou utilisant ces vues ).

Dans mon exemple ma vue a un champ de type ‘nombre’ (number), son alimentation est issue d’une table qui elle est de type ‘caractère’ (varchar). Il suffirait donc de tester dans le corps de la vue ce champs précis et d’isoler un champs lorsque celui ci ne correspond pas au type ‘nombre’ (number). La façon de procéder est très simple avec l’utilisation d’une petite fonction ou une procédure que vous pourrez ajouter dans un package.

CREATE OR REPLACE FUNCTION IS_NUMBER (LC$A_TESTER VARCHAR2)
RETURN number IS
dummy NUMBER;
INVALID_NUMBER EXCEPTION;
PRAGMA EXCEPTION_INIT(INVALID_NUMBER, -6502);
BEGIN
dummy := TO_NUMBER(LC$A_TESTER);
RETURN 1;
EXCEPTION WHEN INVALID_NUMBER THEN
RETURN 0;
END;
/

Pourquoi utiliser une fonction plutôt qu’une procédure ? Car son utilisation dans la vue par la suite en dépend, et aussi si vous désirez mutualiser son utilisation pour des packages àvenir ou dans d’autres bloc PL/SQL. Ceci dit, vous pouvez très facilement en faire une procédure en retournant directement la colonne ou null dans le cas contraire.

CREATE OR REPLACE PROCEDURE IS_NUMBER (LC$A_TESTER VARCHAR2)
RETURN number IS
dummy NUMBER;
INVALID_NUMBER EXCEPTION;
PRAGMA EXCEPTION_INIT(INVALID_NUMBER, -6502);
BEGIN
dummy := TO_NUMBER(LC$A_TESTER);
RETURN LC$A_TESTER;
EXCEPTION WHEN INVALID_NUMBER THEN
RETURN NULL;
END;
/

Et pour son utilisation dans une vue vous procéderez donc de cette façon :

SELECT decode(is_number('1'),1,to_number(id_salarie_att),'')
FROM DUAL

Je l’utilise ici dans un decode, mais libre à vous de l’utiliser dans un bloc PL/SQL, avec un case, etc.

Share

Tags: fonctionoraclepl/sqlproceduretablestypevues

You may also like...

  • Les 10 meilleurs pratiques de codage pour une lisibilite optimale, une maintenance facilitee et un projet perenne (Php/MySql) 6 Avr, 2011
  • WP-Crontrol, un crontab pour WordPress & le mode maintenance 4 Fév, 2011
  • Configuration du fichier tnsname.ora sur un serveur UNIX (Oracle/Unix) Configuration du fichier tnsname.ora sur un serveur UNIX (Oracle/Unix) 19 Mai, 2011
  • Kint pour remplacer var_dump(), print_r() et debug_backtrace() en PHP 2 Mar, 2014

Laisser un commentaire Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

  • Previous story Revue du web du 16/06/2011
  • Next story Time Laps : Here Comes The Night
  • Onglets

    • Recent Posts
    • Most Popular
    • Comments
    • Tags
    • L’Écosse en une semaine6 mars 2020
    • Belkin Wemo Switch : allumer, éteindre et statut de tous vos switchs !20 mars 2016
    • Réparer VM Oracle VirtualBox Avorté11 décembre 2014
    • NAS Thecus N25607 octobre 2014
    • Afficher la couverture du livre en cours de lecture sur le Kobo By Fnac18 mai 2012
    • Comment installer des presets (paramètres prédéfinis) sur Adobe Lightroom 4 sur Mac20 juillet 2013
    • Sauvez votre lapin ! (Nabaztag)2 août 2011
    • Test du Videoprojecteur BenQ W700+22 février 2013
    • Fanny's Party 40 - Noël à la pelle - CatnGeek on:Sauvez votre lapin ! (Nabaztag)
    • maxime arnaudet on:Comment installer des presets (paramètres prédéfinis) sur Adobe Lightroom 4 sur Mac
    • Kb on:Afficher la couverture du livre en cours de lecture sur le Kobo By Fnac
    • Muriel on:Afficher la couverture du livre en cours de lecture sur le Kobo By Fnac
    • alternative app apple application astuce bretagne coding eclipse film flore fonction ftp Google gopro guadeloupe ios iphone kobo le sud liseuse mac os x media mer nas nature nowatch oracle os x panoramique photo photographie php pl/sql plugin podcast procedure qnap server serveur ssh video wallpaper wordpress xml youtube
  • Home
  • Toutes les catégories
  • Wiki Technique
  • Tester le type de colonne dans une vue ou une table (Oracle / Php)
  • Wiki Technique

    • Belkin Wemo Switch : allumer, éteindre et statut de tous vos switchs !20 mars 2016
    • Réparer VM Oracle VirtualBox Avorté11 décembre 2014
    • QNAP inclut le chiffrement intégral du NAS basé sur la technologie de chiffrement de volume2 octobre 2014
    • Augmenter un File System sous Linux6 juin 2014
    • Augmenter la taille d’un disque dur d’une VM sous VirtualBox (VDI)4 mars 2014
  • Blog

    • L’Écosse en une semaine6 mars 2020
    • NAS Thecus N25607 octobre 2014
    • QNAP inclut le chiffrement intégral du NAS basé sur la technologie de chiffrement de volume2 octobre 2014
    • HPC, la course à la puissance.4 juin 2014
    • YunoHost : Adieu Gmail, Drive, Dropbox, etc.19 mars 2014
  • Médias

    • Revue du web du 25/05/201325 mai 2013
    • Revue du web du 16/05/201316 mai 2013
    • Revue du web du 30/03/201330 mars 2013
    • Revue du web du 04/03/20134 mars 2013
    • freshnews #357 Samsung Galaxy Note III / Appels telephoniques sur Facebook Messenger / iPad detrone17 janvier 2013
  • A propos
  • Mentions legales
  • FAQ

Aurélien PIAT 2011~2020 - aurelienpi.at - Certains droits réservés : Creative Commons (France)

Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site web. Si vous continuez à utiliser ce site, nous supposerons que vous en êtes satisfait.Ok