当前位置: 首页 > 面试题库 >

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

姬浩渺
2023-03-14
问题内容

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

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
}

问题答案:

您不能使用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。



 类似资料:
  • 问题内容: 我知道clojure / java互操作的基础:从clojure调用Java,反之亦然。但是,我无法将类型的集合从clojure返回到Java。我试图从正在调用clojure的Java代码中看到这种性质的东西。 让我们考虑一下,我正在使用clojure编写API,该API将作为jar文件分发,可以从Java使用。我的问题确实是如何代替???AOT的:gen- class里面有问号,因此

  • com.microsoft.sqlserver.jdbc.sqlserverexception:操作数类型冲突:nvarchar与com.microsoft.sqlserver.jdbc.sqlserverexception.makefromdatabaseerror(sqlserverexception.java:196)com.microsoft.sqlserver.jdbc.sqlserve

  • 问题内容: 这是我的基本功能: 此功能能够连接并在我的数据库上执行查询… 我想创建相同的功能,但更通用。…前一个仅用于一个表(),新表必须能够接受查询的参数作为输入,以及将在其中执行查询的类类型。这将允许我仅使用一行来执行查询。 应该是这样的: 您发现我不知道如何“通用”代码… 我希望已经清楚了… PS 应该是DB()中表的类的代表。 谢谢。 问题答案: 如果您打算返回结果集,请使用:

  • 我是新的TypeScript和我正在努力写HOC与typecheck。这是我的HOC: 它抛出一个错误: 类型(组件:反应。组件类型 我完全不知道如何继续使用这段代码,也不知道如何让它工作。 有什么想法吗?

  • 我想在UDAF中传递一个数组作为输入模式。 我给出的例子非常简单,它只是对2个向量求和。实际上我的用例更复杂,我需要使用UDAF。 在“显示”动作之前,所有这些都可以很好地进行转换。但这部剧引发了一个错误: 斯卡拉。MatchError:[WrappedArray(21.4,24.9,22.0)](属于org.apache.spark.sql.execution.aggregate.InputAg

  • 我目前正在使用环境变量向负载测试传递自定义参数。例如,我的测试类如下所示: 然后,我将使用以下工具运行测试: 有没有更多的方式可以将自定义参数传递给命令行应用程序?