Erreur dans une création de fonction. Possible?
Bonjour,
Je suis actuellement au sein d'une entreprise et tout va bien, merci. :lol:
J'avais commencé à créer une fonction qui met à jour une table. Çà c'est bon ça marche.
Seulement je dois la passer en dynamique et pour le cas créer une table ou non.
Exemple :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
create function tranchePrix(@ecarteur smallint, @createTable char(1))
RETURNS VARCHAR(20)
AS
BEGIN
DECLARE @Valeur VARCHAR(20)
DECLARE @Phrase VARCHAR(20)
DECLARE @Tranche INT
SET @Phrase = 'Terminé'
SET @Tranche = 0
IF(@createTable = 'O')
BEGIN
WHILE (@Tranche < 1000)
BEGIN
IF(@Tranche = 0)
BEGIN
create table test (Id INT)
END
set @Tranche = @Tranche +5000
END
END
ELSE IF(@createTable = 'N')
BEGIN
set @Phrase = 'TrancheVerre' + @ecarteur
END
ELSE
BEGIN
set @Phrase = 'Erreur 2ème Argument'
END
RETURN @Phrase
END |
On définit dans les arguments de la fonction si on veut créer la table ou non. Si on veut la créer alors on ddois le faire dynamiquement. Dans mon cas 'TranchePrix' + cast(@ecarteur As VARCHAR).
@ecarteur étant l'écart de prix que l'on veut, c'est juste visuel.
au moment d'exécuter la fonction j'obtiens :
Citation:
"Msg*443, Niveau*16, État*15, Procédure*tranchePrix, Ligne*21
Utilisation non valide d'un opérateur présentant des effets secondaires ou d'un opérateur dépendant du temps 'CREATE TABLE' dans une fonction."
Comment contourner le problème sachant que je dois absolument créer la table avec un nom dynamique ?