Bonjour,
Je cherche à créer une fonction scalaire qui sera appelée depuis un programme tiers. Pour ce faire dans sqlserver management studio (je suis en version 2014) je déroule l'arbre programmabilité/fonction, je fais un clic droit sur Fonctions scalaires puis Nouvelle fonction scalaire.
Ce qui me donne ce template :
Je rajoute dans ce template ce que je veux faire (pour le moment pour le test c'est juste une selection de nom et prenom :
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
38
39 -- ================================================ -- Template generated from Template Explorer using: -- Create Scalar Function (New Menu).SQL -- -- Use the Specify Values for Template Parameters -- command (Ctrl-Shift-M) to fill in the parameter -- values below. -- -- This block of comments will not be included in -- the definition of the function. -- ================================================ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <Author,,Name> -- Create date: <Create Date, ,> -- Description: <Description, ,> -- ============================================= CREATE FUNCTION <Scalar_Function_Name, sysname, FunctionName> ( -- Add the parameters for the function here <@Param1, sysname, @p1> <Data_Type_For_Param1, , int> ) RETURNS <Function_Data_Type, ,int> AS BEGIN -- Declare the return variable here DECLARE <@ResultVar, sysname, @Result> <Function_Data_Type, ,int> -- Add the T-SQL statements to compute the return value here SELECT <@ResultVar, sysname, @Result> = <@Param1, sysname, @p1> -- Return the result of the function RETURN <@ResultVar, sysname, @Result> END GO
Or quand j'enregistre il me propose de stocker cela dans un fichier .sql là où j'ai tous mes scripts de déjà enregistré. Après l'enregistrement je ne vois pas apparaître ma fonction dans l'arbre des fonctions scalaires.
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
38
39
40
41
42
43
44 -- ====================================================================== -- A partir de l'UID de l'utilisateur on récupère son nom et son prénom -- On construit un mot de passe en selectionnant : -- 3 caractères dans le prénom + 3 caractères dans le nom + -- un nombre aléatoire + un caractère spécial aléatoire -- ====================================================================== USE XXX; SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <XXXXX> -- Create date: <23/09/2016> -- Description: <Fonction permettant de générer un mot de passe simple> -- ============================================= CREATE FUNCTION dbo.fctGetMdpSilpc ( @_uid nvarchar(450) ) RETURNS varchar(9) AS BEGIN -- Déclaration des variables DECLARE @nom varchar(32) DECLARE @prenom varchar(32) DECLARE @carspe varchar(1) DECLARE @mdp varchar(9) DECLARE @nbalea varchar(2) -- selection des noms et prénoms Select @nom = personne_nom, @prenom = personne_prenom From dbo.PERSONNE where personne_uid = @_uid -- Return the result of the function RETURN @nom END GO
Quel est la manipulation a effectuer pour que ma fonction s'enregistre bien dans les fonctions scalaires ?
Merci d'avance.
Partager