Bonjour,
Je suis actuellement au sein d'une entreprise et tout va bien, merci.
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 :
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).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
@ecarteur étant l'écart de prix que l'on veut, c'est juste visuel.
au moment d'exécuter la fonction j'obtiens :
Comment contourner le problème sachant que je dois absolument créer la table avec un nom dynamique ?"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."
Partager