Pour bien comprendre le contexte, voici quelques préliminaires :
Dans mes procédures stockées, j'ai pris l'habitude de créer mes requêtes SQL
en assemblant mes clauses dans des chaines de caractères pour faciliter la
lecture et permettre la création de requêtes complexes.
En fonction de divers paramètres, j'assemble les clauses qui vont bien et au
final je fais un EXEC(@Sql) et cela fonctionne très bien.
J'aimerais étendre ce mode de fonctionnement à la programmation de mes
functions. Or, on ne peut pas exécuter la commande EXEC !
Voici un exemple :
Dans une table SUPPLEMENT, j'ai la colonne FORMULE nvarchar(200) qui
contient une formule du style 'Nb*0.2'
J'aimerais avoir une fonction CALCULE(@Nb,@nSuppl) et qui me retournerait le
résultat du calcul en fonction du paramètre @Nb.
J'ai donc commencé à assembler mes clauses, mais il faut exécuter :
SET @Sql='SELECT @Resu=replace(FORMULE,''Nb'',@Nb) FROM SUPPLEMENT WHERE
nSuppl=@nSuppl'
EXEC(@Sql)
RETURN @Resu
Dans un PS, cela fonction, mais on ne peut pas faire d'EXEC dans une
fonction...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Stephane Le Coustre
bonjours
tu peut executer que des procedure stocker etendue dans une fonction
si tu veut plus ample information sur les fonction va voir dans l'aide de CREATE FUNCTION dans la rubrique "NOTES"
"Arnaud CAVELIER" a écrit :
Bonjour,
Pour bien comprendre le contexte, voici quelques préliminaires :
Dans mes procédures stockées, j'ai pris l'habitude de créer mes requêtes SQL en assemblant mes clauses dans des chaines de caractères pour faciliter la lecture et permettre la création de requêtes complexes.
En fonction de divers paramètres, j'assemble les clauses qui vont bien et au final je fais un EXEC(@Sql) et cela fonctionne très bien.
J'aimerais étendre ce mode de fonctionnement à la programmation de mes functions. Or, on ne peut pas exécuter la commande EXEC !
Voici un exemple : Dans une table SUPPLEMENT, j'ai la colonne FORMULE nvarchar(200) qui contient une formule du style 'Nb*0.2' J'aimerais avoir une fonction CALCULE(@Nb,@nSuppl) et qui me retournerait le résultat du calcul en fonction du paramètre @Nb.
J'ai donc commencé à assembler mes clauses, mais il faut exécuter : SET @Sql='SELECT @Resu=replace(FORMULE,''Nb'',@Nb) FROM SUPPLEMENT WHERE nSuppl=@nSuppl' EXEC(@Sql) RETURN @Resu
Dans un PS, cela fonction, mais on ne peut pas faire d'EXEC dans une fonction...
Avez-vous des pistes ?
Merci de votre aide Arnaud
bonjours
tu peut executer que des procedure stocker etendue dans une fonction
si tu veut plus ample information sur les fonction va voir dans l'aide de
CREATE FUNCTION
dans la rubrique "NOTES"
"Arnaud CAVELIER" a écrit :
Bonjour,
Pour bien comprendre le contexte, voici quelques préliminaires :
Dans mes procédures stockées, j'ai pris l'habitude de créer mes requêtes SQL
en assemblant mes clauses dans des chaines de caractères pour faciliter la
lecture et permettre la création de requêtes complexes.
En fonction de divers paramètres, j'assemble les clauses qui vont bien et au
final je fais un EXEC(@Sql) et cela fonctionne très bien.
J'aimerais étendre ce mode de fonctionnement à la programmation de mes
functions. Or, on ne peut pas exécuter la commande EXEC !
Voici un exemple :
Dans une table SUPPLEMENT, j'ai la colonne FORMULE nvarchar(200) qui
contient une formule du style 'Nb*0.2'
J'aimerais avoir une fonction CALCULE(@Nb,@nSuppl) et qui me retournerait le
résultat du calcul en fonction du paramètre @Nb.
J'ai donc commencé à assembler mes clauses, mais il faut exécuter :
SET @Sql='SELECT @Resu=replace(FORMULE,''Nb'',@Nb) FROM SUPPLEMENT WHERE
nSuppl=@nSuppl'
EXEC(@Sql)
RETURN @Resu
Dans un PS, cela fonction, mais on ne peut pas faire d'EXEC dans une
fonction...
tu peut executer que des procedure stocker etendue dans une fonction
si tu veut plus ample information sur les fonction va voir dans l'aide de CREATE FUNCTION dans la rubrique "NOTES"
"Arnaud CAVELIER" a écrit :
Bonjour,
Pour bien comprendre le contexte, voici quelques préliminaires :
Dans mes procédures stockées, j'ai pris l'habitude de créer mes requêtes SQL en assemblant mes clauses dans des chaines de caractères pour faciliter la lecture et permettre la création de requêtes complexes.
En fonction de divers paramètres, j'assemble les clauses qui vont bien et au final je fais un EXEC(@Sql) et cela fonctionne très bien.
J'aimerais étendre ce mode de fonctionnement à la programmation de mes functions. Or, on ne peut pas exécuter la commande EXEC !
Voici un exemple : Dans une table SUPPLEMENT, j'ai la colonne FORMULE nvarchar(200) qui contient une formule du style 'Nb*0.2' J'aimerais avoir une fonction CALCULE(@Nb,@nSuppl) et qui me retournerait le résultat du calcul en fonction du paramètre @Nb.
J'ai donc commencé à assembler mes clauses, mais il faut exécuter : SET @Sql='SELECT @Resu=replace(FORMULE,''Nb'',@Nb) FROM SUPPLEMENT WHERE nSuppl=@nSuppl' EXEC(@Sql) RETURN @Resu
Dans un PS, cela fonction, mais on ne peut pas faire d'EXEC dans une fonction...
Avez-vous des pistes ?
Merci de votre aide Arnaud
bruno reiter [MVP]
Cette méthode n'est généralement pas bonne pour des requêtes complexes pour des raisons de performance, le plan d'execution doit être recréé chaque fois et le cout peut etre important, surtout si la proc est souvent utilisée, à plus forte raison en interactif.
br
"Arnaud CAVELIER" wrote in message news:
Bonjour,
Pour bien comprendre le contexte, voici quelques préliminaires :
Dans mes procédures stockées, j'ai pris l'habitude de créer mes requêtes
SQL
en assemblant mes clauses dans des chaines de caractères pour faciliter la lecture et permettre la création de requêtes complexes.
En fonction de divers paramètres, j'assemble les clauses qui vont bien et
au
final je fais un EXEC(@Sql) et cela fonctionne très bien.
J'aimerais étendre ce mode de fonctionnement à la programmation de mes functions. Or, on ne peut pas exécuter la commande EXEC !
Voici un exemple : Dans une table SUPPLEMENT, j'ai la colonne FORMULE nvarchar(200) qui contient une formule du style 'Nb*0.2' J'aimerais avoir une fonction CALCULE(@Nb,@nSuppl) et qui me retournerait
le
résultat du calcul en fonction du paramètre @Nb.
J'ai donc commencé à assembler mes clauses, mais il faut exécuter : SET @Sql='SELECT @Resu=replace(FORMULE,''Nb'',@Nb) FROM SUPPLEMENT WHERE nSuppl=@nSuppl' EXEC(@Sql) RETURN @Resu
Dans un PS, cela fonction, mais on ne peut pas faire d'EXEC dans une fonction...
Avez-vous des pistes ?
Merci de votre aide Arnaud
Cette méthode n'est généralement pas bonne pour des requêtes complexes pour
des raisons de performance, le plan d'execution doit être recréé chaque fois
et le cout peut etre important, surtout si la proc est souvent utilisée, à
plus forte raison en interactif.
br
"Arnaud CAVELIER" <ArnaudCAVELIER@discussions.microsoft.com> wrote in
message news:84A45CF6-64E6-4677-9760-76E9D497E9CE@microsoft.com...
Bonjour,
Pour bien comprendre le contexte, voici quelques préliminaires :
Dans mes procédures stockées, j'ai pris l'habitude de créer mes requêtes
SQL
en assemblant mes clauses dans des chaines de caractères pour faciliter la
lecture et permettre la création de requêtes complexes.
En fonction de divers paramètres, j'assemble les clauses qui vont bien et
au
final je fais un EXEC(@Sql) et cela fonctionne très bien.
J'aimerais étendre ce mode de fonctionnement à la programmation de mes
functions. Or, on ne peut pas exécuter la commande EXEC !
Voici un exemple :
Dans une table SUPPLEMENT, j'ai la colonne FORMULE nvarchar(200) qui
contient une formule du style 'Nb*0.2'
J'aimerais avoir une fonction CALCULE(@Nb,@nSuppl) et qui me retournerait
le
résultat du calcul en fonction du paramètre @Nb.
J'ai donc commencé à assembler mes clauses, mais il faut exécuter :
SET @Sql='SELECT @Resu=replace(FORMULE,''Nb'',@Nb) FROM SUPPLEMENT WHERE
nSuppl=@nSuppl'
EXEC(@Sql)
RETURN @Resu
Dans un PS, cela fonction, mais on ne peut pas faire d'EXEC dans une
fonction...
Cette méthode n'est généralement pas bonne pour des requêtes complexes pour des raisons de performance, le plan d'execution doit être recréé chaque fois et le cout peut etre important, surtout si la proc est souvent utilisée, à plus forte raison en interactif.
br
"Arnaud CAVELIER" wrote in message news:
Bonjour,
Pour bien comprendre le contexte, voici quelques préliminaires :
Dans mes procédures stockées, j'ai pris l'habitude de créer mes requêtes
SQL
en assemblant mes clauses dans des chaines de caractères pour faciliter la lecture et permettre la création de requêtes complexes.
En fonction de divers paramètres, j'assemble les clauses qui vont bien et
au
final je fais un EXEC(@Sql) et cela fonctionne très bien.
J'aimerais étendre ce mode de fonctionnement à la programmation de mes functions. Or, on ne peut pas exécuter la commande EXEC !
Voici un exemple : Dans une table SUPPLEMENT, j'ai la colonne FORMULE nvarchar(200) qui contient une formule du style 'Nb*0.2' J'aimerais avoir une fonction CALCULE(@Nb,@nSuppl) et qui me retournerait
le
résultat du calcul en fonction du paramètre @Nb.
J'ai donc commencé à assembler mes clauses, mais il faut exécuter : SET @Sql='SELECT @Resu=replace(FORMULE,''Nb'',@Nb) FROM SUPPLEMENT WHERE nSuppl=@nSuppl' EXEC(@Sql) RETURN @Resu
Dans un PS, cela fonction, mais on ne peut pas faire d'EXEC dans une fonction...