OVH Cloud OVH Cloud

Création colonnes incrémentés

3 réponses
Avatar
IUT STID
Bonjour

Nous aimerions ajouter des colonnes =E0 une table. Le nombre=20
de colonnes doit etre =E9gal au nombre max d' 1 colonne de=20
la table. Et le nom des colonnes doit etre comme suit:
DAS1, DAS2, ...., DASMax
Nous avons cr=E9e une proc=E9dure pour r=E9cup=E9rer le nombre de=20
colonnes =E0 cr=E9er:

DECLARE @nbmax INT
EXEC Max_das @nbmax OUTPUT
PRINT @nbmax

CREATE PROC Max_das
(@nbmax INT OUTPUT)
AS
BEGIN
SET @nbmax =3D (SELECT MAX(nbdas) FROM RSA_1_2002)
END

Comment faire la suite ?

3 réponses

Avatar
Patrice Scribe
Quelque chose :

SET @compteur=1
WHILE @compteur<=@nbmax BEGIN
@sql="ALTER TABLE MaTable ADD COLUMN " etc...
EXECUTE(@sql)
SET @compteur=compteur+1
END

Tu peux commencer par un "PRINT" au lieu d'un EXECUTE pour voir le script
généré

Ceci dit as tu envisagé de créer plutôt une table secondaire qui stockerait
pour une pk donné et un "n° de champ" donné, la valeur correspondante ??

Patrice




--

"IUT STID" a écrit dans le message de
news:af8301c3ecae$dd392400$
Bonjour

Nous aimerions ajouter des colonnes à une table. Le nombre
de colonnes doit etre égal au nombre max d' 1 colonne de
la table. Et le nom des colonnes doit etre comme suit:
DAS1, DAS2, ...., DASMax
Nous avons crée une procédure pour récupérer le nombre de
colonnes à créer:

DECLARE @nbmax INT
EXEC Max_das @nbmax OUTPUT
PRINT @nbmax

CREATE PROC Max_das
(@nbmax INT OUTPUT)
AS
BEGIN
SET @nbmax = (SELECT MAX(nbdas) FROM RSA_1_2002)
END

Comment faire la suite ?
Avatar
IUT STID
Merci pour ce code.
Mais nous voulons des noms de colonne égaus a DAs1, DAS2,
DAS3 jusqua la fin du compteur
On a essayé ADD DAS+@compteur mais ca ne marche pas.

-----Message d'origine-----
Quelque chose :

SET @compteur=1
WHILE @compteur<=@nbmax BEGIN
@sql="ALTER TABLE MaTable ADD COLUMN " etc...
EXECUTE(@sql)
SET @compteur=compteur+1
END

Tu peux commencer par un "PRINT" au lieu d'un EXECUTE


pour voir le script
généré

Ceci dit as tu envisagé de créer plutôt une table


secondaire qui stockerait
pour une pk donné et un "n° de champ" donné, la valeur


correspondante ??

Patrice




--

"IUT STID" a écrit dans le message de
news:af8301c3ecae$dd392400$
Bonjour

Nous aimerions ajouter des colonnes à une table. Le nombre
de colonnes doit etre égal au nombre max d' 1 colonne de
la table. Et le nom des colonnes doit etre comme suit:
DAS1, DAS2, ...., DASMax
Nous avons crée une procédure pour récupérer le nombre de
colonnes à créer:

DECLARE @nbmax INT
EXEC Max_das @nbmax OUTPUT
PRINT @nbmax

CREATE PROC Max_das
(@nbmax INT OUTPUT)
AS
BEGIN
SET @nbmax = (SELECT MAX(nbdas) FROM RSA_1_2002)
END

Comment faire la suite ?

.



Avatar
Vuillermet Jacques
>Mais nous voulons des noms de colonne égaus a DAs1, DAS2, DAS3 jusqua la


fin du compteur

Ce que te dit Patrice, c'est que ce genre de structure est en général le
signe d'une conception insuffisament poussée de la structure de la base de
données... qui tôt ou tard se "paiera" en terme de maintenance, de temps de
développement ou de performances.

A moins d'un cas très particulier (?).

Jacques.

"IUT STID" a écrit dans le message de news:
be2401c3ecc2$1dc02c90$
Merci pour ce code.
Mais nous voulons des noms de colonne égaus a DAs1, DAS2,
DAS3 jusqua la fin du compteur
On a essayé ADD DAS+@compteur mais ca ne marche pas.

-----Message d'origine-----
Quelque chose :

SET @compteur=1
WHILE @compteur<=@nbmax BEGIN
@sql="ALTER TABLE MaTable ADD COLUMN " etc...
EXECUTE(@sql)
SET @compteur=compteur+1
END

Tu peux commencer par un "PRINT" au lieu d'un EXECUTE


pour voir le script
généré

Ceci dit as tu envisagé de créer plutôt une table


secondaire qui stockerait
pour une pk donné et un "n° de champ" donné, la valeur


correspondante ??

Patrice




--

"IUT STID" a écrit dans le message de
news:af8301c3ecae$dd392400$
Bonjour

Nous aimerions ajouter des colonnes à une table. Le nombre
de colonnes doit etre égal au nombre max d' 1 colonne de
la table. Et le nom des colonnes doit etre comme suit:
DAS1, DAS2, ...., DASMax
Nous avons crée une procédure pour récupérer le nombre de
colonnes à créer:

DECLARE @nbmax INT
EXEC Max_das @nbmax OUTPUT
PRINT @nbmax

CREATE PROC Max_das
(@nbmax INT OUTPUT)
AS
BEGIN
SET @nbmax = (SELECT MAX(nbdas) FROM RSA_1_2002)
END

Comment faire la suite ?

.