cette commande sql serveur non transact sql, mais reconnu par le manager et sqlcmd et osql offre des possibilités alors insoupconnées en SQL. Attention! Toad ne l’accepte pas!
lien msdn : http://msdn2.microsoft.com/en-us/library/ms188037.aspx
Exemple : le problème N°6 de sqlpro ( concours developpez.com )
Pour cet exercice, il s’agit d’alimenter les nombres de 0 à 9999 dans une table de nom T_ENTIER_ENT contenant un seul champ de type entier et de nom ENT_N. Au départ, cette table contient les nombres de 0 à 9.
J’ai intitulé ce problème, ‘énumération’…
La table T_ENTIER_NET est ainsi constituée :
CREATE TABLE T_ENTIER_ENT
(ENT_N INTEGER);
INSERT INTO T_ENTIER_ENT VALUES (0) ;
INSERT INTO T_ENTIER_ENT VALUES (1) ;
INSERT INTO T_ENTIER_ENT VALUES (2) ;
INSERT INTO T_ENTIER_ENT VALUES (3) ;
INSERT INTO T_ENTIER_ENT VALUES (4) ;
INSERT INTO T_ENTIER_ENT VALUES (5) ;
INSERT INTO T_ENTIER_ENT VALUES (6) ;
INSERT INTO T_ENTIER_ENT VALUES (7) ;
INSERT INTO T_ENTIER_ENT VALUES (8) ;
INSERT INTO T_ENTIER_ENT VALUES (9) ;
ENT_N
——
0
1
2
3
4
5
6
7
8
9
Sauriez vous faire une telle requête avec un seul update ?
Voici un extrait de la table des données à insérer :
NOMBRE
———–
10
11
12
13
14
…
9995
9996
9997
9998
9999
Ma réponse :
INSERT INTO T_ENTIER_ENT(ENT_N) SELECT MAX(ENT_N)+1 FROM T_ENTIER_ENT;
go 9991
prodigieux, non ?