Bonjour,
Je veux créer une fonction qui retourne le nom de la personne
Merci de votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part select nom from personnel where matr='1111'
Bonjour,
Je veux créer une fonction qui retourne le nom de la personne
Merci de votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part select nom from personnel where matr='1111'
Bonjour,
Disons que si vous aviez consulté l'aide de SQL Server sur ce sujet, vous auriez trouvé en quelques minutes.
Vous ne donnez même pas le code que vous avez créé et pourquoi il ne fonctionne pas, ce qui laisse penser que vous êtes dans une posture attentiste. Professionnellement, cela ne vous mènera jamais très loin. Mais "c'est vous qui voyez; y'en a qu'on essayé, ils ont eu des problèmes".
En jugeant du nombre de vos points, je ne doute pas que je ne suis pas le premier à vous demander cela, mais j'espère être le dernier.
Donc, si vous voulez pouvoir affecter le nom trouvé directement à une variable, il est nécessaire d'écrire une fonction scalaire comme celle-ci :
Ce qui vous permet de l'utiliser de la façon suivante dans une procédure stockée par exemple :
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 CREATE FUNCTION udf_personnel_get_nom_by_matricule ( @_matricule varchar(4) ) RETURNS varchar(32) AS BEGIN DECLARE @personnel_nom varchar(32) SELECT @personnel_nom = nom FROM dbo.personne WHERE matr = @_matricule RETURN @personnel_nom END
Vous pouvez aussi créer une fonction de table dite "en ligne", ce qui retourne, dans votre cas, une table d'une seule ligne et une seule colonne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part DECLARE @mon_employe varchar(32) = dbo.udf_personnel_get_nom_by_matricule('1111')
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 CREATE FUNCTION udf_personnel_get_nom_by_matricule ( @_matricule varchar(4) ) RETURNS TABLE AS RETURN ( SELECT nom FROM dbo.personne WHERE matr = @_matricule )
J'obtiens cette erreur :
Msg*4121, Niveau*16, État*1, Ligne*1
Impossible de trouver la colonne "dbo" la fonction définie par l'utilisateur ou l'agrégat "dbo.getNomMatr". Le nom pourrait également être ambigu.
Prenez l'habitude de donner le code que vous avez utilisé :
- pour créer la fonction
- pour tenter d'obtenir un résultat
Vous comprenez aisément que sans cela, il est impossible de vous aider.
Cependant je subodore que vous avez créé la deuxième fonction, qui est une fonction de table, ce qui fait que vous devez donc écrire SELECT * FROM dbo.getNomMatr('1111'), puisqu'une fonction de table renvoie ... une table
@++![]()
Bonjour,
Premièrement je vous remercie c'est une fonction de table
Est ce que j'ai pas la possibilité d'intégré la fonction dans comme ceci
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT dbo.getNomMatr('1111')
Oui, mais dans ce cas c'est une fonction scalaire.Est ce que j'ai pas la possibilité d'intégré la fonction dans comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT dbo.getNomMatr('1111')
Elle ne peut vous retourner qu'une seule valeur, ce qui est correct dans votre cas.
C'est donc la première fonction que je vous ai donné qu'il faut créer.
@++![]()
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