Pergunta

Funções com valor escalar podem ser chamadas no .NET da seguinte maneira:

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;

Também sei que funções com valor de tabela podem ser chamadas de maneira semelhante, por exemplo:

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

Minha pergunta é: as funções com valor de tabela podem ser chamadas como procedimentos armazenados, como as funções com valor escalar podem?(por exemplo, replicar meu primeiro trecho de código com uma função com valor de tabela sendo chamada e obtendo a tabela retornada por meio de um parâmetro ReturnValue).

Foi útil?

Solução

Não, porque você precisa selecioná-los.No entanto, você pode criar um wrapper de proc armazenado, o que pode anular o objetivo de ter uma função de tabela.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top