如何将Java中的StringArrayType传递到SQL Server中的存储过程?

eli*_*man 5 java sql sql-server stored-procedures jdbc

我在SQL Server 2014中有一个存储过程。此存储过程采用type参数StringArrayType。这是修改它的存储过程脚本:

ALTER PROCEDURE [dbo].[sp_something] @list_a StringArrayType READONLY
AS  
    DECLARE @sol INT = 0
    DECLARE @MAXOnlineProcesses INT = 0
BEGIN  

    SET @sol = ( SELECT COUNT(*) 
                          FROM @list_a 
                          WHERE Category not in ( SELECT AgentHostName 
                                                  FROM [dbo].[TableA]
                                                  WHERE DATEDIFF(SECOND , [CurrentRequestTime] , GETDATE()) <  
                                                              ( [RequestsInterval] * ( SELECT [Value] 
                                                                                       FROM [ATC].[dbo].[TableB] WITH(NOLOCK) 
                                                                                       WHERE [Parameter] = 'RemoveProcessAfterNumRequests'))))
    SELECT @sol as [AA], 
    (@sol - @MAXOnlineProcesses) as [BB]
END
Run Code Online (Sandbox Code Playgroud)

我在.Net中有一个代码,该代码设置DataTable变量以执行此存储过程:

Dim dtable As DataTable = New DataTable
        Try
            Dim sqlConnection As String = "server=" & SQLServerName & ";uid=" & SQLUserID & ";pwd=" & SQLpassword & ";database=" & SQLDBName
            dtable.Columns.Add("Category")
            For Each item As String In list
                dtable.Rows.Add(item)
            Next

            Using cnn As New SqlClient.SqlConnection(sqlConnection)
                Using cmd As SqlClient.SqlCommand = New SqlClient.SqlCommand("sp_something", cnn)
                    cmd.CommandType = CommandType.StoredProcedure
                    cmd.Parameters.AddWithValue("@list_a", dtable)
                    cmd.CommandTimeout = 30
                    Using adapter As New SqlClient.SqlDataAdapter(cmd)
                        Using ds As New DataSet
                            adapter.Fill(ds)
                            Dim Host2Wait As Integer = ds.Tables(0).Rows(0)("BB")
                            If Host2Wait > 0 Then
                             //some code
                            End If
                        End Using
                    End Using
                End Using
            End Using
            Return True
        Catch ex As Exception
            // some code
            Return False
        End Try
Run Code Online (Sandbox Code Playgroud)

现在,我需要使用Java代码调用此存储过程。我怎样才能做到这一点?我该如何传递将被设置为的java中的存储过程StringArrayType?我看到了一些有关DataTable在Java中可以替换.Net的问题,但是我无法破解如何使用WebRowSet进行操作。

我尝试了JdbcRowSet和WebRowSet,但是我认为这不是正确的方向。