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 :

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
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
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
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.

Quel est la manipulation a effectuer pour que ma fonction s'enregistre bien dans les fonctions scalaires ?

Merci d'avance.