2008-12-24 8 views
0

Quelle est la différence entre une fonction et une procédure dans SQL Server?Fonctions et procédures dans SQL Server

+0

est-ce pas quelque chose que vous pouvez trouver dans la documentation? J'essaie de comprendre la raison pour laquelle vous posez cette question. – shahkalpesh

+0

C'est une question parfaitement valide et sans ambiguïté. Pour autant que je sache, SO n'est pas seulement pour des choses que vous ne pouvez pas trouver dans la documentation, alors ... – user39603

Répondre

1

Vous pouvez intégrer des fonctions dans les instructions SQL comme vous le feriez pour tout funcion SQL natif comme COALESCE, REDUIRE, etc. Procs peut renvoyer une valeur, mais les valeurs qu'un être retournés sont limitées. Par exemple, si je me souviens bien, vous pouvez renvoyer une variable de table à partir d'une fonction, mais pas une proc stockée.

Donc, avec une fonction, vous pouvez faire des choses comme ceci:

SELECT dbo.MyFunc(myColumn) as [Column Alias Name] FROM MyTable 

ou

SELECT * FROM dbo.MyTableVariableReturningFunc() as tbl 

Avec procs stockées, vous pouvez obtenir la valeur de retour comme ceci:

DELCARE @ReturnVal as int 

EXEC @ReturnVal = USP_MyStoredProc 
1

Une autre diffrenc e est que les fonctions définies par l'utilisateur ne peuvent pas modifier les données de la base de données, alors que les procédures peuvent.

0

Logiquement, pour moi, une fonction serait utilisée pour effectuer tâches courantes dans la base de données entière dans une requête. Une procédure stockée serait d'autre part quelque chose que j'utiliserais pour effectuer des tâches complexes effectuées de façon régulière mais qui ne sont pas courantes. Par exemple, les procédures stockées que j'écris généralement saisissent des données d'un fichier et les téléchargent vers une table (tout en exécutant de nombreuses autres opérations dans le processus, telles que l'audit, etc.). Ce n'est pas quelque chose qui serait utilisé ailleurs, mais je le ferais une fois par jour.

Questions connexes