0
votes

Procédure stockée qui ne renvoie que la valeur d'une ligne

Quelque part où j'ai juste besoin de passer dans la clé primaire d'un personnel et de le trouver dans la base de données et renvoyez la valeur de l'une des colonnes de cette table pour lui à l'appelant - c'est un < Code> bit colonne -. Assez simple et je l'ai écrit comme ça. Je voulais juste voir s'il y a une meilleure façon d'écrire la procédure stockée pour atteindre le même objectif ou non. xxx


2 commentaires

pourquoi pas seulement SELECT ISNULL (P.SistAdither, 0) .... , vous pouvez sauvegarder le sommet et existe


Note latérale: pas Utilisez le préfixe SP _ pour vos procédures stockées. Microsoft a Réservé ce préfixe pour son propre usage ( Voir Nommer des procédures stockées ) , et vous courez le risque d'un nom de nom à l'avenir. C'est également mauvais pour votre performance de procédure stockée . Il est préférable de simplement éviter tout simplement sp _ et utiliser quelque chose d'autre comme préfixe - ou pas de préfixe du tout!


3 Réponses :


2
votes

Tout d'abord, le existe semble superflu, donc: xxx

s'il n'y a pas de ligne de correspondance, cela ne renvoie aucune ligne.

second , il n'est totalement pas clair pour moi pourquoi vous utiliseriez une procédure stockée comme celle-ci. Vous pouvez créer une fonction scalaire définie par l'utilisateur qui semble plus utile.


1 commentaires

Oh, je n'avais que d'utiliser des fonctions avant. Je pourrais le convertir en fonction de la fonction. ... Mais alors j'ai aussi pensé que peut-être encore à l'avenir, je dois retourner plus de colonnes sur ce personnel afin que je puisse continuer à les ajouter à celui-ci



1
votes

oui, juste xxx

car il s'agit de la clé primaire, on ne peut y avoir qu'un seul résultat, donc pas besoin de top 1 . Et le si existez est juste inutile lorsque vous pouvez renvoyer le résultat directement.


0 commentaires

2
votes

Oui, il y a une meilleure façon - supprimer le si existe - c'est complètement inutile. En outre, vous n'avez pas besoin de haut (1) , car la clé primaire est unique par définition, la procédure stockée ne renvoie jamais une ligne ou rien si la valeur de la clé principale n'est pas trouvée. < Pré> xxx


0 commentaires