小编典典

如何将用户定义的表类型传递给Java的MSSQL请求

sql

给定一个简单的存储过程,该存储过程具有一个以整数列作为参数的表:

CREATE PROCEDURE [dbo].[table_sel]
@tbl INT32Table READONLY
AS
BEGIN
SET NOCOUNT ON;
SELECT value FROM @tbl
END

如何从Java执行此存储过程?从C#,这就是我想要的:

SqlConnection sqlconn;
System.Data.DataTable tbl = new System.Data.DataTable("INT32Table", "dbo");
tbl.Columns.Add("value", typeof(int));
tbl.Rows.Add(2);
tbl.Rows.Add(3);
tbl.Rows.Add(5);
tbl.Rows.Add(7);
tbl.Rows.Add(11);
using (SqlCommand command = new SqlCommand("table_sel"))
{
    command.Connection = sqlconn;
    command.Parameters.AddWithValue("@tbl", tbl);
    command.CommandType = System.Data.CommandType.StoredProcedure;
    SqlDataReader reader = command.ExecuteReader();

    //do stuff
}

阅读 54

收藏
2021-04-22

共1个答案

小编典典

您不能使用JDBC传递TVP。正如他们两年前提到的那样,Microsoft JDBC团队仍在为此进行工作。参考链接:

访问:[http](http://blogs.msdn.com/b/jdbcteam/archive/2012/04/03/how-would-

you-use-table-valued-parameters-tvp.aspx) :
//blogs.msdn.com/b/jdbcteam/archive/2012/04/03/how-would-you-use-table-
valued-parameters-
tvp.aspx

通过在过程主体中传递XML参数和OPENXML()来尝试一些替代解决方案,而不是使用TVP。

2021-04-22