sql
Merveilleux Sql
Un grand bravo à Laetitia Avrot ! La documentation du merveilleux langage SQL sur la merveilleuse machine IBM i !!!
Requête Récursive
Une histoire de Composants/Composés... create table piece( piece dec(5, 0) primary key,libelle varchar(100)); create table compo( cpse dec(5, 0) not null references piece, cpsant dec (5, 0) not null references piece, note varchar(100), constraint Compo_pas_doublon_cpse_cpsant...
Row Value Constructor
select * from sysibm.sysdummy1 where (1, 2, 3 ) = (1, 2, 3) ; -- true a1=b1 and a2=b2 and a3=b3 select * from sysibm.sysdummy1 where (1, 2, 3 ) = (1, 2, 4) ; -- false select * from sysibm.sysdummy1 where (1, 2, 3 ) != (1, 2, 4) ; -- truea1!=b1 or a2!=b2...
Values
-- values : to create a table on the fly ! select * from test10 where (num1,num2, num3) in(values( 1, 2, 3), (3, 4, 4)); select * from (values ( 1, 2, 3), (3, 4, 4)) as t; values ( 1, 2, 3), (3, 4, 4); values 123, 456, 789; insert into test10values (5,...
Fonction & Result Set
create or replace function milan/fmr040 (p_mois dec(2))returns table (mois dec(2), code dec(8), codcli char(8))specific milan/fmr040return select t1.mois, t1.code, t2.codcli from fmr015p as t0 join fichier2 as t2 on t0.codcli = t2.codcli join fichier1...
Procédure & Result Set
create or replace procedure milan/fmr050 (in p_mois dec(2))specific milan/fmr050dynamic result sets 1set option dbgview = *source b1:begindeclare c1 cursor with return for select t1.mois, t1.code, t2.codcli from fmr015p as t0 join fichier2 as t2 on t0.codcli...
Pseudo Unique
Il arrive qu'une table, qui devrait être unique, ne le soit que très modérément...Ceci pose des problèmes lors d'éventuelles jointures : les lignes se multiplient ! Dans d'autre configuration, une non-unicité peut se terminer en plantage de la requête....
SQL PL SubRoutine
Dans une procédure ou fonction Sql, il arrive que l'on ait un petit bout de code qui se répète à différents endroit :-(( En Rpg, on le collerai vite fait bien fait dans une fonction interne ou dans un sous-programme (exsr begsr endsr). L'exemple en SQL...
SQL is fun
Look how much fun it is to program SQL. Three lines of code and you get an interesting answer [...] Compare to Java and C where typing until your fingers fall off usually doesn’t result in much of anything. SQL, Lisp, and Haskell are the only programming...
pdt80
-- Retourne une pseudo date samj 8 0 à partir d'une vraie date -- 0001-01-02 si erreur -- select pdt80(datenaiss) from personne create function milan/pdt80 (vdate1 date) returns dec(8, 0) language sql deterministic no external action contains sql set...
vdate
-- Retourne une vraie date à partir d'une pseudo date 8 0 samj -- 0001-01-02 si la pseudo date fournie est invalide -- Ex : select vdate(19981225) from sysibm/sysdummy1 create function vdate (zn80 dec(8, 0)) returns date language sql deterministic no...
alphatisation
select nombre, nombre !! '' as concat, char(nombre) as char, digits(nombre) as digits from fichier010 Nombre CONCAT CHAR DIGITS 1,00 1,00 1,00 00100 2,00 2,00 2,00 00200 ,00 ,00 ,00 00000 23,00- -23,00 -23,00 02300 66,78 66,78 66,78 06678 Le numérique...
Compound statement
BEGIN variable declarations condition declarations cursor declarations handler declarations assignment, flow of control, Sql statements, and other Compound statements... END
dt9 & dt10
// Deux fonctions qui permettent de transformer une pseudo date en vraie date. // Dans DB2 LUW une fonction, qui utilise alors le “SQL inline”, ne peut utiliser de Handler, c'est la raison pour laquelle DT10 appelle la procédure DT10A, qui elle, a accès...
Date
select current date from sysibm .sysdummy1; select c urrent date + 65 day from sysibm .sysdummy1; select cast ( '2007-02-26' as date ) + 2 year - 3 month + 29 day as toto from sysibm .sysdummy1 ; se lect date ( '2007-01-31' ) + 1 month as toto from sysibm...
mdy2yymd
// Nous voici dans l'aspect procédurale de SQL, // SQL PSM (Persistent Stored Modules) ou SQL PL (Procedural Language) ou SPL // Certains fichiers systèmes AS/400 gérent les dates à l'aide de 2 champs, // La fonction SQL ci-dessous les rend un peu plus...
exists
select * from pays where not exists (select * from personne where pays_id=pays_id_naiss)
/image%2F1025633%2F20151122%2Fob_b0e74c_pam007i.png)