Sql 在存储过程中传递大容量值的数据表
我试图使用如下数据表将批量值传递给存储过程:Sql 在存储过程中传递大容量值的数据表,sql,tsql,Sql,Tsql,我试图使用如下数据表将批量值传递给存储过程: var idlist = new DataTable(); idlist.Columns.Add("sid", typeof(int)); idlist.Columns.Add("suid", typeof(int)); idlist.Rows.Add(new object[] {1, 1}); idlist.Rows.Add(new object[] {1, 2});
var idlist = new DataTable();
idlist.Columns.Add("sid", typeof(int));
idlist.Columns.Add("suid", typeof(int));
idlist.Rows.Add(new object[] {1, 1});
idlist.Rows.Add(new object[] {1, 2});
cmd.Parameters.Add(new SqlParameter("@SID", Convert.ToString(idlist)));
CREATE TYPE IDLISTS AS TABLE (
SID int, SUID int )
go
在SQL Server中,存储过程如下所示:
ALTER PROCEDURE [dbo].[SUBNETTEMP]
(
@SID as IDLISTS READONLY
)
AS
BEGIN
Create table [tempIDTable] (sid int, suid int)
Insert into [tempIDTable]
select * from @SID
END
IDLISTS
定义为表类型,如下所示:
var idlist = new DataTable();
idlist.Columns.Add("sid", typeof(int));
idlist.Columns.Add("suid", typeof(int));
idlist.Rows.Add(new object[] {1, 1});
idlist.Rows.Add(new object[] {1, 2});
cmd.Parameters.Add(new SqlParameter("@SID", Convert.ToString(idlist)));
CREATE TYPE IDLISTS AS TABLE (
SID int, SUID int )
go
运行程序后,我不确定存储过程为什么不创建temIDTable
。我不确定存储过程是否成功执行?有人能帮忙吗
谢谢。在C#代码中,必须指定sqlDBType才能使用表值参数
所以试试这个:
SqlParameter myParam = cmd.Parameters.Add(new SqlParameter("@SID", idlist));
myParam.SqlDbType = SqlDbType.Structured;
有关更多信息和示例,请参阅。是否有任何理由要求参数必须是表格?是否可以将参数更改为2个独立的int字段而不是表?还可以将:Convert.ToString(idlist)更改为:idlist@Moe西斯科,谢谢你接电话。我更改了代码以删除转换。