C# 如何处理使用ado.net返回表的内联表值函数
我已经在sql中实现了内联表值函数。我正在尝试使用ado.net读取C中内联表值函数返回的表值。请帮忙。我在这里附上代码 Sql函数:- C代码:- 以下所有链接都与您的问题相关。。已经解决了。。因此,请在发布任何问题之前。。请看它是否已经有答案/解决了C# 如何处理使用ado.net返回表的内联表值函数,c#,asp.net,sql-server,asp.net-mvc,ado.net,C#,Asp.net,Sql Server,Asp.net Mvc,Ado.net,我已经在sql中实现了内联表值函数。我正在尝试使用ado.net读取C中内联表值函数返回的表值。请帮忙。我在这里附上代码 Sql函数:- C代码:- 以下所有链接都与您的问题相关。。已经解决了。。因此,请在发布任何问题之前。。请看它是否已经有答案/解决了 表值函数返回一个表,以便读取commandtext应该是的结果 command.CommandText = "select * from dbo.fun(@lname)"; 现在,您正在使用ExecuteScalar函数执行命令 从MSDN-
表值函数返回一个表,以便读取commandtext应该是的结果
command.CommandText = "select * from dbo.fun(@lname)";
现在,您正在使用ExecuteScalar函数执行命令
从MSDN-
执行查询,并返回查询中第一行的第一列
查询返回的结果集。添加了其他列或行
忽略
因此,即使函数返回包含多列的记录集,也只返回第一行的第一列
如果需要读取表值函数返回的完整记录集,则需要使用ExecuteReader函数
将CommandText发送到连接并构建SqlDataReader
[HttpPost]
public void call_stored_procedure(List<string> lyname)
{
Console.WriteLine(lyname);
string dogCsv = string.Join(",", lyname.Select(i => "'" + i + "'"));
Console.WriteLine(dogCsv);
using (SqlConnection connection = new SqlConnection("data source=.; database=Srivatsava; integrated security=SSPI"))
{
connection.Open();
using (SqlCommand command = connection.CreateCommand())
{
command.CommandText = "select dbo.fun(@lname)";
command.Parameters.AddWithValue("@lname", dogCsv);
command.CommandType = CommandType.Text;
String s=command.ExecuteScalar().ToString();
Console.WriteLine(s);
connection.Close();
}
}
}
command.CommandText = "select * from dbo.fun(@lname)";