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+
"Une idée mal écrite est une idée fausse !"
http://hamid-mira.blogspot.com
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 +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
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+
"Une idée mal écrite est une idée fausse !"
http://hamid-mira.blogspot.com
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 +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
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+
"Une idée mal écrite est une idée fausse !"
http://hamid-mira.blogspot.com
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
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