salut a vous. j'ai crée une fonction dans ma base de données. j'aimerai avant de l'appeler tester si elle existe. comment m'y prendre ?
salut a vous. j'ai crée une fonction dans ma base de données. j'aimerai avant de l'appeler tester si elle existe. comment m'y prendre ?
Tester l'existence d'une fonction avant de la créer est limite concevable et acceptable.
Tester l'existence d'une fonction avant de l'appeler est une idée complètement saugrenue, pour ne pas dire stupide !
A+
pas tout à fait !!!!
Démonstration...
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 CREATE FUNCTION dbo.F () RETURNS BIT AS BEGIN RETURN 1 END; GO CREATE PROCEDURE P AS IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_NAME = 'F' AND ROUTINE_SCHEMA = 'dbo' AND ROUTINE_TYPE = 'FUNCTION') RETURN; SELECT dbo.F() AS VRAI GO DROP FUNCTION dbo.F;CQFD !!!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part EXECUTE P;
A +
Je n'ai dit que ce n'était pas possible. Je ne parlais pas de la faisabilité !
Évidemment qu'on peut toujours tester dans le code T-SQL l'existence d'une fonction. Mais dans la pratique cela sous entend que l'application ne connait pas avec exactitude le schéma sur lequel elle agit !
Personnellement, je n'ai jamais eu besoin de tester l'existence d'une fonction avant de l'appeler (ou de ne pas l'appeler). En effet, je pars du principe que les objets du schéma sont OK et valides, et je préfère même dans ces cas que le programme génère une erreur.
Ou alors je n'ai pas bien saisi le topo !
A+
Il m'est arrivé de créer (il y a longtemps) une application dans laquelle les utilisateurs pouvaient écrire leur propre calculs ce qui conduisait à écrire dynamiquement des fonctions scalaires, qui étaient ensuite utilisées dans des requêtes dynamiques.
Donc, nous vérifiions l'existence de la fonction utilisée avant d'exécuter le SQL dynamique.
A +
Dans ce cas bien particulier, je serais d'accord avec toi sur la méthode et le principe.
J'ai réagi de manière un peu virulente parce j'ai déjà vu des situations, heureusement très rares, où le développeurs par une absence totale de suivi rigoureux des objets du schéma, commence par tester l'existence d'un objet avant de l'utiliser, et ce, simplement dans le but de ne pas générer des erreurs, court-circuitant ainsi des bloc de code T-SQL !
Donc, Merci SQLPro pour ces précisions et ce complément d'info.
L'auteur de cette discussion pourra peut être nous expliquer la raison exacte pour laquelle il souhaite tester l'existence de la fonction avant de l'appeler (?). Parce que ce n'est pas une pratique courante.
A+
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager