> Tech > Créer des fonctions système

Créer des fonctions système

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

Les fonctions et procédures cataloguées système sont pratiques. Un de leurs avantages en particulier est que l'on peut les utiliser dans toute base de données sans avoir à  les qualifier entièrement. Bien qu'elles résident dans la base de données Master, on peut appeler les procédures cataloguées et les fonctions système

depuis
toute base de données, et elles fonctionneront comme si elles se trouvaient dans
cette base de données.

En quoi cet avantage nous concerne-t-il ? De nombreux programmeurs SQL apprécient
le fait de pouvoir créer leurs propres procédures cataloguées système. Désormais,
on peut aussi créer ses propres fonctions système (c’est-à -dire des fonctions
que l’on peut invoquer depuis toute base de données, et que l’on n’a pas besoin
de qualifier avec la base de données source ni même le nom du propriétaire). NB
: Souvenez-vous que les UDF classiques doivent être qualifiées avec le nom du
propriétaire pour être résolues.

La création d’une UDF système se déroule en deux étapes. Premièrement, il faut
créer la fonction dans la base de données Master. Utilisez le préfixe fn_ pour
nommer la fonction. Après avoir créé cette dernière, utilisez la procédure cataloguée
système sp_changeobjectowner pour remplacer le nom du propriétaire de la fonction
par system_function_schema. Si on suit ces étapes, on peut appeler la fonction
depuis n’importe quelle base de données se trouvant sur la machine SQL Server.
Pour illustrer ce processus, réexaminons le premier exemple de fonction du présent
article, qui ressemblait à  ceci :

CREATE FUNCTION DayOnly(@Date datetime)
RETURNS varchar(12)
AS
BEGIN
RETURN CONVERT(varchar(12), @Date, 101)
END
A présent, utilisons une commande DROP classique sur cette fonction :

DROP FUNCTION dbo.DayOnly

Puis, réexécutons le script CREATE FUNCTION, en substituant Master à  la base de
données courante, le nom incluant le fn_ préfixe, et le propriétaire étant system_function_schema.
Le listing 9 présente le code correspondant. Cette fonction va ramener la date
courante, même si on se trouve dans une base de données différente de celle dans
laquelle on a créé la fonction, et que l’on n’a pas qualifié cette base de données
avec le propriétaire.

Téléchargez cette ressource

Les mégatendances cybersécurité et cyber protection 2024

Les mégatendances cybersécurité et cyber protection 2024

L'évolution du paysage des menaces et les conséquences sur votre infrastructure, vos outils de contrôles de sécurité IT existants. EPP, XDR, EDR, IA, découvrez la synthèse des conseils et recommandations à appliquer dans votre organisation.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010