数据表和表值参数不返回任何行

本文关键字:返回 任何行 参数 值参 数据表 | 更新日期: 2023-09-27 18:36:32

我有一个用户定义的表和一个存储过程:

 CREATE TYPE [dbo].[int_list_tbltype] AS TABLE(
[ID] INT  NULL
 )
 GO
 CREATE PROCEDURE [dbo].[GetList]
 @Status dbo.int_list_tbltype READONLY
 SELECT v.Status, v.Item
 FROM myView v  
 INNER JOIN @Status tvp ON v.Status = tvp.ID

和 C# 代码:

        DataTable dt = new DataTable();
        SqlDataAdapter sqlAdtp = new SqlDataAdapter();            
        SqlConnection conn = new SqlConnection(ConnString);
        SqlCommand cmd = new SqlCommand("GetList", conn);
        //Create a table just for testing
        DataTable _dt = new DataTable();
        _dt.Columns.Add("ID", typeof(int));
        _dt.Rows.Add(1);
        _dt.Rows.Add(2);
        SqlParameter param = new SqlParameter();
        param.ParameterName = "@Status";
        param.SqlDbType = System.Data.SqlDbType.Structured;
        param.Value = _dt;
        param.TypeName = "dbo.int_list_tbltype";
        cmd.Parameters.Add(param); 
        sqlAdtp.SelectCommand = cmd;
        sqlAdtp.Fill(dt);

我已经在一个单独的查询窗口中测试了 sql,向 TVP 添加值,它按预期返回了几百行。
但是当我尝试将参数传递到存储过程中时,我得到一个空的数据表。

任何人都可以看到它在哪里失败吗?

谢谢!

数据表和表值参数不返回任何行

当然,花时间发布一个问题,答案突然出现在我面前。

我忘记了这句简单的行:

 cmd.CommandType = CommandType.StoredProcedure;