Du SQL DB2 au XML

Il n y a qu’un pas !

Il s’agit ici de générer du XML sur base d’un select sur une table en SQL.

Requête de base :

select
XMLElement( name "root", ma_colonne)
FROM ma_lib . ma_table
Fetch First 1 Rows only;

Structure d’utilisation de XMLElement :

>>-XMLELEMENT--(--NAME--element-name---------------------------->

>--+------------------------------+----------------------------->
   '-,--xmlnamespaces-declaration-'   

>--+---------------------------+-------------------------------->
   '-,--xmlattributes-function-'   

>--+-----------------------------------+------------------------>
   | .-------------------------------. |   
   | V                               | |   
   '---,--element-content-expression-+-'   

>--+----------------------------------------------------------+-->
   |             .------------------------------------------. |   
   |        (1)  V   .-EMPTY ON NULL-. (2)              (3) | |   
   '-OPTION--------+-+-NULL ON NULL--+----------------+-----+-'   
                   |              .-USING-.           |           
                   | .-XMLBINARY--+-------+--BASE64-. |           
                   | |            .-USING-.         | |           
                   '-+-XMLBINARY--+-------+--HEX----+-'           

>--)-----------------------------------------------------------><

[important]Option intéressante dans le cas de valeur manquante (left / right outer join)

  • EMPTY ON NULL
  • NULL ON NULL[/important]

Dans le contenu de la balise, rien n’interdit de mettre une constante, numérique ou pas à la place de la valeur d’une colonne.

Et le contenu peut également être un autre XMLElement :
SELECT
XMLElement( name "home", 1),
XMLElement( name "niveauUn", 'La suite'),
XMLElement( name "N2",

____XMLElement( name "niveauTrois", ma_colonne)
)
FROM ma_lib . ma_table
Fetch First 1 Rows only;

 

<home>1</home>
<niveauUn>La suite</niveauUn>
<N2><niveauTrois>1</niveauTrois></N2>

XMLForest

C’est kif-kif, la syntaxe est plus sympa, mais son utilisation dépendra de la gestion des NULL.

Imaginons un select .. left join qui nous donne en première colonne un numéro (col1) et NULL dans la seconde colonne (col2) :

SELECT
XMLForest(col1 AS "C1"),
XMLForest(col2 AS "Cnull"),
XMLElement( name "Cvide" , col2)
from ...

 

<C1>1</C1>
-
<Cvide/>

Le XmlElement retourne la balise vide : <CVide/>

Présentation en Row

Précédemment, le résultat se présentait sur plusieurs colonnes, voici un exemple de présentation en 1 colonne sur plusieurs lignes :

SELECT '' as "result" FROM ma_lib.TableOneRow
UNION
SELECT xmlserialize ( xmlelement(name "SectionListName", 'TEST') as clob ) as "result" FROM ma_lib.TableOneRow
UNION
SELECT '' as "result" FROM ma_lib.TableOneRow;

TableOneRow est une table ne contenant qu’une colonne et qu’une ligne.

Le XmlSerialize permet de caster le xml pour pouvoir faire l’union entre tous les résultats.

 

<SectionLists><SectionList>
<SectionListName>TEST</SectionListName>
<SectionListItems>

 

Un attribut pour la route ?

XmlElement(name "List",
____XmlElement(name "Item",
________XmlAttributes('0' as "index"), '')
) ,

:
maKyo

Lien Permanent pour cet article : http://ma-kyo.com/sql-db2-xml/

Café Numérique Charleroi 2013-2014 – Les changements

Depuis septembre 2013, plein de choses ont changés au niveau des cafés numériques.

Chapeauté par le Café Numérique Central, un nouveau site a vu le jour

http://www.cafenumerique.org

 

Chaque ville à un espace dédié pour la planification des futurs events, les logos ont été uniformisés, de nouvelles villes font partie de l’aventure !

TweetWallPro soutient les différentes villes en tant que partenaire. Il nous permet de diffuser les tweet en direct lors de l’event : http://www.tweetwallpro.com

Le café numérique ne fait pas de politique et n’est pas là pour vendre ou vous faire acheter quelque chose. C’est un event mensuel, local, qui présente des orateurs passionnés de la région. Ils viennent gratuitement partager leur savoir faire, leurs connaissances et leur métier sur un thème qui touche toujours au numérique ! Ce sont des start-up, des PME, des indépendants, …
Il n’est pas rare que les orateurs proposent des emplois ou des stages, c’est un moyen pour eux de trouver des gens débordants d’énergie positive.

Nous recherchons en permanence des orateurs, de nouveaux lieux, des partenaires locaux pouvant nous fournir du matériel en prêt. N’hésitez pas à proposer votre aide ! Vous voulez devenir orateur ? http://www.cafenumerique.org/charleroi/become-a-speaker/

 

L’organisation à Charleroi a également changé, maintenant c’est une équipe de passionnés qui investissent leur temp dans la gestion du #CafeNCh, dont je fais partie désormais :

David Lydia Vinciane Raphaël Lise Jean-christophe

 

Nous sommes très heureux de notre nouveau partenaire : http://www.uniwan.be
Lors de notre event de février, dans le coffre-fort de la brasserie « La vie est belge », Uniwan nous a fourni tout le matériel nécessaire pour amener le wifi dans la salle, il nous fournit un projecteur lorsque c’est possible et nous soutient dans notre projet pour embellir Charleroi.

Likez notre page facebook : https://www.facebook.com/CafeNCh et jetez un oeil aux photos de nos derniers events !

 

La liste de nos prochains events : http://www.cafenumerique.org/charleroi/all-future-events/

maKyo

Lien Permanent pour cet article : http://ma-kyo.com/cafe-numerique-charleroi-2014-changements/

Récupération de l’id auto-généré dans une procédure stockée sql db2

Comment récupérer un ID qui a été auto-généré ?

Je viens d’insérer un record dans ma table qui possède un ID auto-incrémenté, comment récupérer l’ID qui vient d’être inséré ?

Lorsque la syntaxe est inconnue, le reflexe est de faire un select sur la table en prenant la dernière row insérée … couteux en I/O et inefficace vu les accès concurrents …

Dans mon cas, tous mes accès se font via des procédures stockées en SQL.

Le corps de ma procédure effectue l’insert, une fois l’insert exécuté, je récupère l’id dans une variable déclarée (ou dans un paramètre OUTPUT de ma procédure stockée) :

DECLARE TEMP BIGINT ;
:
( insert exécuté )
VALUES IDENTITY_VAL_LOCAL ( ) INTO TEMP ;

 

La doc ibm explique qu’il s’agit bien de la valeur Locale au même niveau de traitement, donc ok en cas d’accès concurrent.
maKyo

Lien Permanent pour cet article : http://ma-kyo.com/id-auto-increment-procedure-stockee-sql-db2/

Créer une table avec une clé auto-incrément en sql db2

Voici la syntaxe, contrairement à cet exemple, je vous conseille d’utiliser le cycle et de gérer la fin de vie de vos données 😉

CREATE TABLE MA_LIB.MA_TABLE (


MON_ID BIGINT GENERATED ALWAYS AS IDENTITY (
START WITH 1 INCREMENT BY 1
NO MINVALUE NO MAXVALUE
NO CYCLE NO ORDER
CACHE 20 ),


PROP_1 DATE DEFAULT NULL ,
PROP_2 DECIMAL(4, 0) NOT NULL DEFAULT 0 ,
:

);

Tout simplement !

maKyo

Lien Permanent pour cet article : http://ma-kyo.com/db2_id_auto_increment/

Créer un trigger en sql

Comment créer un trigger en SQL DB2 ?

Un trigger est un déclencheur, il s’exécute avant/après une opération (mise à jour, insertion, suppression) dans la table concernée.

On les utilise beaucoup pour garder une cohérence dans la base de données (comme une mise à jour d’une autre table) mais pas seulement : application de règles métiers, contrôle des données insérées, log … . La plupart des trigger que j’ai rencontré sont en RPG, ils fonctionnent très bien mais pour les jeunes développeurs … il s’agit de l’ancien temps !! Heureusement, il est possible de les réaliser en SQL et sont donc maintenables par n’importe quelle ressource qui fait du SQL.

Exemple : Continue reading

Lien Permanent pour cet article : http://ma-kyo.com/creer-un-trigger-en-sql-db2/

Les relations avec la presse

Les relations avec la presse

Je ne sais pas vous, mais souvent je me demande comment intéresser la presse, le milieu journalistique .. j’ai lu dernièrement un article sur le site de TopLexis qui explique ce qu’est l »information » pour un journaliste : http://www.toplexis.com/les-videos/entreprise-relations-presse-comment-interesser-la-presse/ cela m’a aidé à comprendre que ce que je voulais mettre en avant n’était pas nouveau ou exceptionnel et qu’il fallait que je change mon approche.

Je vous invite à regarder également cette vidéo qui explique un cas concret sur l’utilité de changer son approche, sa façon de présenter ce que l’on fait : http://www.toplexis.com/les-videos/developpez-visibilite-grace-aux-relations-presse/

Lien Permanent pour cet article : http://ma-kyo.com/les-relations-avec-la-presse/

Café Numérique Charleroi – Septembre 2013

Café Numérique Charleroi – Septembre 2013

De l’argentique au numérique

Cette édition de septembre aura l’honneur de recevoir M.Monniez Laurent de chez Black n’ White Studio:

L’optique globale du Black n’ White STUDIO est de mettre en avant le monde de la photographie, de partager, de faire découvrir et de mettre à disposition des savoir-faire ainsi que des espaces créatifs

Les services qui vous sont proposés s’étendent de:
la location de studios photo, aux stages photo, aux conférences, aux expos, à l’achat/vente de matériel photo, aux soirées relooking, etc….

Plus d’info : http://www.blacknwhitestudio.com/

C’est le 10 septembre 2013 au WUP, inscription gratuite … Continue reading

Lien Permanent pour cet article : http://ma-kyo.com/cafe-numerique-charleroi-septembre-2013/

SageThumbs

AI, PS, EPS, … Thumbnail enfin disponible ! SageThumbs

Beaucoup d’utilisateurs au sein d’une entreprise, n’ont pas d’accès à la suite Adobe comme logiciel … vu le prix, c’est du luxe pour juste visualiser une photo et faire quelques manipulations !

Quand l’équipe du marketing vous dit « je ne sais pas associer la photo à un article pour la photothèque vu que je ne sais même pas ouvrir le fichier ! » … il faut bien trouver une solution. Surtout que les formats sont variés : .ai .psd .eps …

Dans un premier temps l’installation d’Xnview a apporté un certain soulagement, mais le degré de satisfaction n’était pas suffisant …

Screenshots

Screenshots SageThumbs

Je vous propose de découvrir un outil supplémentaire, qui permet d’afficher les vignettes des fichiers que Windows ne supporte pas :

SageThumbs

 

Ce post en parle mieux que moi :

http://www.webady.fr/05/12/2011/sagethumbs-162-formats-images-miniature-psd-explorateur-windows/

 

 

Site du logiciel : http://code.google.com/p/sagethumbs/

Lien Permanent pour cet article : http://ma-kyo.com/vignette-psd-ai-sagethumbs/

Le temps des chevaliers (Lavaux St-Anne)

Le temps des chevaliers (Lavaux Saint-Anne)

Évènement le 24 et 25 aout 2013 se déroulant autour du château de Lavaux saint-Anne.

Artisans, spectacles, danses, bijoux, vêtements, combats, … !

J’ai passé une superbe journée à rire, apprendre des choses sur le moyen âge, applaudir, écouter de la bonne musique, voir des combats de chevaliers et avec une ambiance de folie au stand de Tir à l’arc !

Je vous conseille d’aller gouter l’hydromel, mais surtout : l’hypocras qui est une véritable explosion de saveurs dans votre bouche, un vin décliné en blanc, rosé et rouge. La première sensation est olfactive, un parfum envoutant, ensuite la découverte gustative vous emmène en terre inconnue ! Si vous voulez découvrir, le stand est présent sur plusieurs marchés et les commandes en ligne sont possibles : http://hypocrasdelachaudasse.blogspot.be

L’event est sur 2 jours, il vous reste demain pour profiter.

Plus de renseignement ? https://www.facebook.com/LeTempsDesChevaliers

Quelques photos de l’event :

Lavaux St-Anne Musique

Lavaux St-Anne Musique

Lavaux St-Anne - Fauconnerie

Lavaux St-Anne – Fauconnerie

Lavaux St-Anne Rapaces

Lavaux St-Anne Rapaces

Photos de Patrick Mavier : http://mpatrick.canalblog.com/archives/2013/08/26/27900394.html

Liens vers les videos :

Lavaux saint-Anne 2013 – Échantillon spectacle Musique

Lavaux saint-Anne 2013 – MAROTTE ET LES MUSARDS

Lavaux saint-Anne 2013 Musique et jonglerie

LeTempsDesChevaliers

LeTempsDesChevaliers

Lien Permanent pour cet article : http://ma-kyo.com/le-temps-des-chevaliers-lavaux-st-anne/

Les tâches « Alpha »

Le rendez-vous avec soi-même

 

Je partage avec vous un outil qui me sert encore aujourd’hui depuis plus de 4 ans …

On est constamment sollicité par nos collègues de travail, et je ne sais pas si vous avez remarqué, mais c’est TOUJOURS urgent ! Vous êtes toujours débordé, votre téléphone sonne toutes les 5 minutes, vous avez la tête sous l’eau … Pire … à la fin de la journée, vous avez l’impression de n’avoir rien fait !! Vous voyez de quoi je parle heiiiiin ?

*STOOOOOP* !! Des outils existent !

Alors c’est quoi ce rendez vous ? Continue reading

Lien Permanent pour cet article : http://ma-kyo.com/les-taches-alpha/

Café numérique Charleroi – Edition du mois de septembre

C’est la rentrée !!!Logo Café numérique

Le thème du café numérique de ce mois ci : « Ces gadgets qui nous changent la vie !« 

Venez nombreux découvrir au Nirvana à Charleroi le café numérique, une ambiance sympa, un bon cocktail, des gens passionnés qui ne demandent qu’à partager leurs énergies positives !

Vous avez envie de parler de gadgets ? de WordPress ? du monde du Libre ? de tout et n’importe quoi ? … la liste est longue, venez échanger vos idées avec nous !

Le 18 septembre, à partir de 19h, inscription gratuite: http://cn-charleroi-septembre-2012-gadgets-changent-vie.eventbrite.fr/

Taverne « Le Nirvana »
Boulevard de l’yser
6000 Charleroi

Followez nous : https://www.facebook.com/CafeNch

Lien Permanent pour cet article : http://ma-kyo.com/cafe-numerique-charleroi-septembre-2012/

Procédure Stockée SQL sur un RPG

Créer une procédure stockée SQL sur un programme externe

Pourquoi ?

Une procédure stockée SQL est une interface, un point d’accès depuis un système externe vers l’intérieur de l’AS400, c’est un moyen d’utiliser vos programmes RPG existant sans avoir à tout recoder dans un autre langage de programmation.

Vos procédures stockées peuvent être appelées pour un site web (en php ou asp), pour afficher des rapports pour Crystal Report et le résultat peut même être exploité dans Excel (Microsoft) ou Calc (Open Office), …

C’est pas le moyen le plus performant, je vous l’accorde …

Comment créer une Procédure Stockée Externe ? Continue reading

Lien Permanent pour cet article : http://ma-kyo.com/procedure-stockee-externe-sql-rpg/

Séquence SQL

Les Séquences

C’est quoi ?

Ayant connu mysql avant de connaitre l’ISeries, j’ai été étonnée de ne pas avoir d’auto-incrément en DB2. Mais dans le monde AS400, l’approche est différente : c’est remplacé par un genre de DATA AREA.

Pas la peine d’aller sur votre session 52/50 et de faire une create data area (quelque chose comme ça : CRTDTAARA)… il est possible de générer l’équivalent en SQL.

A quoi ça sert ?

A générer des clés uniques, incrémentée (ou décrémentée) automatiquement, gérée par le système.

Exemple :

  • Créer un id unique pour une table utilisateur
  • Créer un numéro de commande
  • Créer une trace dans une table de log

L’avantage par rapport à un auto-incrément d’une colonne est qu’il est possible de récupérer la valeur, ou la valeur suivante sans être obligé de faire un insert dans une table, voir le dernier point : « Comment l’utiliser ? »

Comment créer une séquence ?

En SQL

CREATE SEQUENCE myseq
AS INTEGER
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
NO CYCLE
CACHE 10
ORDER

Plus intéressant si on gère la maxvalue, c’est à dire que l’on indique le comporte une fois la valeur maximum atteinte :
CREATE SEQUENCE my_lib.my_seq
AS INTEGER
START WITH 1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 9999
CYCLE CACHE 50 ORDER ;

Une fois le 9999 atteint, il repart à 1 🙂 La maxvalue doit être en accord avec votre rythme de nettoyage de votre table (oui ça se gère la fin de vie de l’information …)

 

>>-CREATE SEQUENCE--sequence-name------------------------------->

   .---------------------------------------------.
   V                                        (1)  |
>----+------------------------------------+------+-------------><
     |     .-INTEGER---.                  |
     +-AS--+-data-type-+------------------+
     +-START WITH--numeric-constant-------+
     |               .-1----------------. |
     +-INCREMENT BY--+-numeric-constant-+-+
     | .-NO MINVALUE----------------.     |
     +-+-MINVALUE--numeric-constant-+-----+
     | .-NO MAXVALUE----------------.     |
     +-+-MAXVALUE--numeric-constant-+-----+
     | .-NO CYCLE-.                       |
     +-+-CYCLE----+-----------------------+
     | .-CACHE--20---------------.        |
     +-+-NO CACHE----------------+--------+
     | '-CACHE--integer-constant-'        |
     | .-NO ORDER-.                       |
     '-+-ORDER----+-----------------------'
data-type:

|--+-built-in-type------+---------------------------------------|
   '-distinct-type-name-'

built-in-type:

|--+-+---SMALLINT---+---------------------------+---------------|
   | +-+-INTEGER-+--+                           |
   | | '-INT-----'  |                           |
   | '---BIGINT-----'                           |
   |                  .-(5,0)-----------------. |
   '-+-+-DECIMAL-+-+--+-----------------------+-'
     | '-DEC-----' |  |             .-,0-.    |
     '-NUMERIC-----'  '-(--integer--+----+--)-'

Avec le Wizard dans l’ISeries Navigateur Continue reading

Lien Permanent pour cet article : http://ma-kyo.com/sequence-sql/

Création de Procédure Stockée SQL via ISeries Navigator (AS400/DB2)

Introduction

Tout le monde n’a pas la chance de travailler avec Oracle ou SQL Server dès le début de sa carrière, mais quand on développe, peu importe la plateforme, peu importe le langage, quand on aime … on ne regarde pas à ça. … oui ok, souvent on a pas le choix de toute façon 😉

Cet article suppose des connaissances de base en SQL

Contexte

IBM ─► AS400 ─► ISeries Navigator ─►Script SQL

[notice]Stop !

Avant d’aller plus loin, oubliez vos a priori sur le monde d’IBM ! Ouvrez vos esprits, soyez OpenMind ![/notice]

Pourquoi utiliser des procédures stockées ?

Les raisons peuvent être multiples.

Par simple choix de structure, de garder le métier sur la DB et ne pas avoir 36 règles de gestion dupliquées avec les risques que ça engendre d’en oublier une en cas de modification … Gestion centralisée : le RPG peut utiliser vos procédures stockée, mais des autres systèmes également : PHP, ASP, Excel / Calc, Crystal Report  ou autres outils de reporting … et quand vous voulez changer le corps de la procédure, pas la peine de passer dans chaque système pour changer la règle.

Cela permet en 1 appel de lancer plusieurs requêtes côté DB, de vraiment faire travailler votre base de données.

Référence

RedBooklogo redbook

http://www.redbooks.ibm.com/

Les RedBook IBM sont une source sûre, fiable, des idées d’utilisation qui vont vous permettre d’aller plus loin. Vous ne perdez jamais votre temps à chercher de la doc dans un redbook.

Évidemment, oubliez l’idée de l’imprimer : nous sommes à l’air du numérique, vous avez un PDF, l’outil de recherche est suffisant pour trouver l’information (CTRL+F), il y a des tables des matières, les sujets sont découpés et leurs documents sont bien structurés pour trouver l’information.

IBM

Le classic boulder : http://publib.boulder.ibm.com/ bien pour trouver 1 info spécifique = quand on sait ce qu’on cherche.

Pour commencer Continue reading

Lien Permanent pour cet article : http://ma-kyo.com/creation-de-procedure-stockee-sql-via-iseries-navigator-as400-db2/

Utilisation de l’ISeries Navigator

C’est pas compliqué !

Vous avez  2 méthodes pour lancer un script SQL avec l’ISeries Navigator :

  1. vous avez juste besoin d’éxécuter un query et vous n’avez pas de temps à perdre : vous utilisez la méthode rapide
  2. vous avez besoin de voir les tables (parce que vous ne connaissez pas le nom par coeur, ou de faire un clic droit pour voir les propriétés, bref de faire autre chose qu’un select …) : vous utilisez la méthode longue

La méthode rapide

vous créez un fichier .sql sur votre bureau, cliquez droit, ouvrir avec « CWBUNDBS.EXE »

ouvrir avec cwbundbs.exe

L’éditeur de script s’ouvre, vous effectuez la connexion avec votre DB/Partition et vous êtes GO.

 

 

La méthode longue Continue reading

Lien Permanent pour cet article : http://ma-kyo.com/utilisation-iseries-navigator/

Café numérique Charleroi

Un café numérique ? kesako ?

Logo Café numérique

[important]

Pour un café numérique réussi :

  • un lieu approprié (où on peut boire un verre de préférence, parler : ça donne soif)
  • des gens sympas (on rigole assurément)
  • un super thème qui tourne autour du numérique (et dieu sait que le sujet est vaste)

[/important]

Mélangez le tout et vous obtenez un super moment de détente sans prise de tête, idéale après le boulot pour penser à autre chose (ou en gardant un pied dedans « why not »), voir même pour apprendre des choses !

Infos sur les prochains thèmes abordés :

http://www.cafenumerique.be/category/charleroi/

Rejoignez nous ! ► Sur Facebook

Lien Permanent pour cet article : http://ma-kyo.com/cafe-numerique-charleroi/

En-haut.be !! Le blog qui aide les commerçants

« L’objectif principal de ce blog est de conseiller au mieux les commerçants locaux dans la mise en place de leur visibilité sur Internet !  » (auteur : Valls y Machinant David.)

Valls y Machinant David

Voilà une jeune homme qui mérite qu’on parle de lui : il essaie de faire bouger les choses, de montrer une nouvelle perspective aux commerçants locaux, PME, indépendants et entrepreneurs …

Il offre une série de Services pour aider les commerçants à mettre en place leur côté « numérique » : de la création de votre vitrine (entendez par la : votre site web), en passant par l’installation et la formation, l’éventail est complet.

 

Son site vous permettra de trouver la solution adaptée à vos besoins : http://www.valls.be/. Passez par les 7 étapes indispensables pour mettre en œuvre un outil qui vous sera indispensable : l’image de votre commerce sur le web ! De la définitions de vos besoins, en passant par le design et pour finir sur la mise en place de votre campagne marketing pour attirer les clients dans votre commerce …

Vous n’êtes pas prêt à investir ? Qu’importe ! Il existe des solutions rapides et gratuites à mettre en place, elles vous mettrons l’eau à la bouche et c’est un très bon début, qui vous donnera envie d’aller plus loin :

Il y a sur son blog un panaché de news intéressantes, que vous touchez à l’informatique ou pas du tout, il saura vous venir en aide !

Ne manquez pas sa newsletter, abonnez-vous … http://www.en-haut.be Bonne visite !

Le_blog_qui_aide_les_commercants

Le blog qui aide les commercants

Lien Permanent pour cet article : http://ma-kyo.com/en-haut-be-le-blog-qui-aide-les-commercants/

Start with you !

Ce site va me permettre d’échanger avec vous mes connaissances acquises au fil du temps car le savoir est une chose qui ne se garde pas pour soi, c’est fait pour être partagé ! Plus je grandis, plus vous grandissez, plus vous grandissez, plus je grandis ^^

C’est un peu le même principe que la célèbre citation : « Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours. » (Lao Tseu)

Je n’ai pas la prétention de vous apprendre à manger … 😉 mais simplement de partager

Lien Permanent pour cet article : http://ma-kyo.com/start-with-you-2/