2010-06-25 8 views
6

Quelles sont les différences entre les procédures stockées et les fonctions.Procédures et fonctions stockées

Chaque fois qu'il ya plus d'entrée, les paramètres de sortie i aller pour la procédure stockée. Si c'est seulement un je vais aller pour les fonctions.

En outre, est-il question de la performance si j'utilise des procédures plus stockées? Je suis inquiet car j'ai près de 50 procédures stockées dans mon projet.

Comment ils diffèrent conceptuellement.

Merci d'avance!

Edited: -

Lorsque i exécuté un calcul dans une procédure stockée et dans les fonctions, i ont constaté que, dans les procédures stockées qu'il prend 0,15 sec, tandis que dans la fonction qu'il faut 0.45sec.

Étonnamment fonctions prennent plus de temps que les procédures stockées. Peut-être que les fonctions valent pour sa réutilisabilité.

Les fonctions en ligne exécutent des procédures plus rapides que tronquées. Je pense que c'est parce que les fonctions à sélection multiple ne peuvent pas utiliser les statistiques, ce qui les ralentit, mais les fonctions de valeur de table en ligne peuvent utiliser des statistiques.

+1

Lorsque vous avez exécuté vos mesures de performance, qu'avez-vous appris? Veuillez mettre à jour la question avec les résultats réels que vous avez obtenus en comparant une fonction et une procédure. –

+0

Comme j'ai beaucoup de procédures stockées, je voudrais vérifier, s'il y a un problème de performance pour en avoir autant? question est éditée. – satya

+0

Lorsque vous avez créé une fonction EXAMPLE et une procédure stockée EXAMPLE et que vous avez exécuté ces deux EXEMPLES 1000 fois pour voir la différence de performance, qu'avez-vous appris? Réécrire tous les 50 dans les deux formes est * pas * utile. Exécuter deux EXEMPLES est très, très utile. –

Répondre

2

Différence entre procédure stockée et les fonctions dans SQL Server ...

http://www.dotnetspider.com/resources/18920-Difference-between-Stored-Procedure-Functions.aspx

Différence entre les procédures stockées et les fonctions définies par l'utilisateur [UDF]

http://www.go4expert.com/forums/showthread.php?t=329

Procédures stockées par rapport aux fonctions

http://searchsqlserver.techtarget.com/tip/Stored-procedures-vs-functions

Quelles sont les différences entre les procédures stockées et fonctions ...

http://www.allinterview.com/showanswers/28431.html

Différence entre procédure stockée et les fonctions

http://www.sqlservercentral.com/Forums/Topic416974-8-1.aspx

1

Pour décider entre l'utilisation de l'un des deux, gardez à l'esprit la différence fondamentale entre eux: les procédures stockées sont conçues pour renvoyer leur sortie à l'application. Un fichier UDF renvoie des variables de table, tandis qu'un fichier SPROC ne peut pas renvoyer une variable de table bien qu'il puisse créer une table. Une autre différence significative entre eux est que les fonctions définies par l'utilisateur ne peuvent pas modifier l'environnement de serveur ou votre environnement de système d'exploitation, tandis qu'un SPROC peut. Sur le plan opérationnel, lorsque T-SQL rencontre une erreur, la fonction s'arrête, tandis que T-SQL ignore une erreur dans un SPROC et passe à l'instruction suivante dans votre code (à condition que vous ayez inclus le support de gestion des erreurs). Vous constaterez également que même si un SPROC peut être utilisé dans une clause XML FOR, un fichier UDF ne peut pas l'être.

Si vous avez une opération comme une requête avec une clause FROM qui exige un ensemble de lignes soit tirée d'une table ou un ensemble de tables, alors une fonction sera votre choix approprié. Toutefois, lorsque vous souhaitez utiliser ce même jeu de lignes dans votre application, le meilleur choix serait une procédure stockée.

Il y a pas mal de débat sur les avantages des performances des UDF par rapport aux SPROC. Vous pourriez être tenté de croire que les procédures stockées ajoutent plus de frais à votre serveur qu'un UDF. Selon la façon dont vous écrivez votre code et le type de données que vous traitez, cela pourrait ne pas être le cas. C'est toujours une bonne idée de texturer vos données dans des opérations importantes ou chronophages en essayant les deux types de méthodes.