Apelarea funcțiilor SQL valoroase din tabelul .NET

Funcțiile cu valoare scalară pot fi apelate din .NET după cum urmează:

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;

De asemenea, știu că funcțiile evaluate în tabel pot fi numite într-un mod similar, de exemplu:

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

Întrebarea mea este că funcțiile evaluate în tabel pot fi numite proceduri stocate, cum ar fi funcțiile scalare? (de exemplu, replicarea primului meu fragment de cod cu o funcție de evaluare a tabelului fiind apelată și obținerea tabelului returnat printr-un parametru ReturnValue).

0
fr hi bn
@ChuckConway De ce să renunțe la C# din titlu? A fost valabil, având în vedere eticheta C# ... dar acea etichetă nu o ajută, să apară în Google.
adăugat autor Doug_Ivison, sursa

1 răspunsuri

Nu, pentru că trebuie să le selectați. Cu toate acestea, puteți crea un proces de stocare stocat proc, care poate învinge punctul de a avea o funcție de tabelă.

0
adăugat
Nu cred că ar înfrânge cu adevărat punctul de a avea o funcție de valoare. Un punct de a avea TVF este că au anumite garanții de siguranță că procedurile stocate nu. Un alt punct este acela că pot fi reutilizate, în timp ce este mult mai dificil să se reutilizeze o procedură stocată fără a se copia și lipi.
adăugat autor user420667, sursa