Question

Les fonctions à valeur scalaire peuvent être appelées depuis .NET comme suit :

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 peuvent être appelées de la même manière, 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 la suivante : les fonctions table peuvent-elles être appelées en tant que procédures stockées, comme le peuvent les fonctions scalaires ?(par exemple, répliquer mon premier extrait de code avec une fonction table appelée et obtenir la table renvoyée via un paramètre ReturnValue).

Était-ce utile?

La solution

Non car vous devez les sélectionner.Cependant, vous pouvez créer un wrapper de procédure stocké, ce qui peut aller à l'encontre de l'intérêt d'avoir une fonction de table.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top