繁体   English   中英

如何处理使用ado.net返回表的内联表值函数

[英]How to handle inline table-valued function that returns a table using ado.net

我已经在sql中实现了内联表值函数。 我正在尝试使用ado.net读取C#中的内联表值函数返回的表值。 请帮忙。 我在这里附加代码。

SQL函数:-

CREATE FUNCTION fun 
(   
    @lname varchar(50)
)
RETURNS TABLE 
AS
RETURN 
(
    select fp.accntname,ld.BU,fp.salesop,idt.isdormant from legacy_system as ls
inner join fourth_page as fp on ls.accountname=fp.accountname
inner join linked as ld on fp.productid=ld.productid
inner join isdormant as idt on idt.productid=ld.productid
inner join legacy_system as l on ls.productid=idt.productid
where l.legacyname in(@lname)
)
GO

C#代码:-

 [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)";

现在,您正在使用ExecuteScalar()函数执行命令。

从MSDN- ExecuteScalar()

执行查询,并返回查询返回的结果集中第一行的第一列。 其他列或行将被忽略。

因此,即使您的函数返回的记录集包含多列,也仅返回第一行的第一列。

如果需要读取表值函数返回的完整记录集,则需要使用ExecuteReader()函数。

ExecuteReader()

将CommandText发送到Connection并构建一个SqlDataReader。

下面的所有链接都related to your question ..它已经解决了..所以before post any question请..请查看它是否已经回答/解决了..

在C#中调用SQL定义的函数

如何在C#中调用SQL函数?

直接从C#调用SQL函数

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM