2008-08-12 7 views
27
.NET

fonctions à valeurs scalaires peut être appelé depuis .NET comme suit:Appel de table Fonctions SQL Précieuses À partir

SqlCommand cmd = new SqlCommand("testFunction", sqlConn); //testFunction is scalar 
cmd.CommandType = CommandType.StoredProcedure; 
cmd.Parameters.Add("retVal", SqlDbType.Int); 
cmd.Parameters["retVal"].Direction = ParameterDirection.ReturnValue; 
cmd.ExecuteScalar(); 
int aFunctionResult = (int)cmd.Parameters["retVal"].Value; 

Je sais aussi que les fonctions table peut être appelée de façon similaire, par exemple :

String query = "select * from testFunction(param1,...)"; //testFunction is table-valued 
SqlCommand cmd = new SqlCommand(query, sqlConn); 
SqlDataAdapter adapter = new SqlDataAdapter(cmd); 
adapter.Fill(tbl); 

Ma question est, peut appeler des fonctions de valeur table que les procédures stockées, comme des fonctions d'une valeur scalaire-peut? (Par exemple, répliquer mon premier extrait de code avec une fonction table appelée et obtenir la table retournée via un paramètre ReturnValue).

+1

@ChuckConway Pourquoi supprimer C# du titre? C'était valide, vu le tag C# ... mais ce tag ne l'aide pas, à apparaître dans google. –

Répondre

19

Non car vous devez les sélectionner. Cependant, vous pouvez créer un wrapper de proc stocké, ce qui peut annuler le point d'avoir une fonction de table.

+0

Je ne pense pas que cela viderait vraiment le point d'avoir une fonction de table. Un point d'avoir TVF est qu'ils ont certaines garanties de sécurité que les procédures stockées ne le font pas. Un autre point est qu'ils peuvent être réutilisés, alors qu'il est beaucoup plus difficile de réutiliser une procédure stockée sans simplement copier-coller. – user420667

Questions connexes