Sql server 在SQL中更新表的存储过程

Sql server 在SQL中更新表的存储过程,sql-server,sql-server-2008,tsql,stored-procedures,Sql Server,Sql Server 2008,Tsql,Stored Procedures,我有一个问题 我有三个变量,v1、v2、v2(都是java.util.ArrayList类型)。我想写一个存储过程,将这个变量作为输入并更新一个表 如何循环抛出sql中变量的数组列表并更新表? 例如,v1(10,11,12)、v2(21,22,23)、v3(31,32,33)的值。表的sql更新应该如下所示 表1: 第1行:10,21,31 第2行:11,22,32 第3行:12,23,33 如果有人能给我回复如何为此编写存储过程,我将不胜感激。我使用了这种方法,它对我来说非常好 让您的存储过程

我有一个问题

我有三个变量,v1、v2、v2(都是java.util.ArrayList类型)。我想写一个存储过程,将这个变量作为输入并更新一个表

如何循环抛出sql中变量的数组列表并更新表? 例如,v1(10,11,12)、v2(21,22,23)、v3(31,32,33)的值。表的sql更新应该如下所示 表1: 第1行:10,21,31 第2行:11,22,32 第3行:12,23,33


如果有人能给我回复如何为此编写存储过程,我将不胜感激。

我使用了这种方法,它对我来说非常好

让您的存储过程接收三个变量,每个变量都是
varchar(max)
——如果您知道变量的大小,则可以编写数字,而不是
max
。例如:

create procedure usp_testSP
    @v1 varchar(max),
    @v2 varchar(max),
    @v3 varchar(max)
as
begin
    declare @v1Values table (number int);

    insert into @v1values
    select * from dbo.fnSplit(@v1,','); -- the fnSplit function is given below

    -- this way you can retrieve all values for other two variables
    -- then you can use the corresponding tables, i.e.: @v1Values to complete the steps you need to.
end
以下是
dbo.fnSplit(@inputList,@delimiter)
的代码:

创建函数[dbo].[fnSplit](@sInputList VARCHAR(max),@sDelimiter VARCHAR(10)=',”
返回@List表(项varchar(100))
开始
声明@sItem varchar(100)
而CHARINDEX(@sDelimiter,@sInputList,0)0
开始
选择@sItem=RTRIM(LTRIM(子字符串(@sInputList,1,CHARINDEX(@sDelimiter,@sInputList,0)-1)),
@sInputList=RTRIM(LTRIM(子字符串(@sInputList,CHARINDEX(@sDelimiter,@sInputList,0)+LEN(@sDelimiter),LEN(@sInputList)))
如果LEN(@sItem)>0
插入@List选择@sItem
结束
如果LEN(@sInputList)>0
开始
插入@List选择@sInputList
结束
返回
结束
最后,在java代码中,可以将列表转换为字符串并将其传递给存储过程调用

List<Integer> v1; //suppose this is the list that contains the values.
String s = String.join("," /*this is the delimiter. It should be the same as the one you use when you call the dbo.fnSplit() function.*/, v1);
列表v1//假设这是包含值的列表。
String s=String.join(“,”/*这是分隔符。它应该与调用dbo.fnSplit()函数时使用的分隔符相同。*/,v1);

您试过什么吗?创建存储过程?是否尝试循环变量?更新表格?什么数据库?您使用的是什么数据访问提供程序?是的,我不熟悉存储过程,但我刚刚编写了更新一行值的更新查询。我可以轻松地使用Java或任何其他编程语言,但我正在使用的应用程序只允许我编写存储过程…这就是为什么我想了解,是否可以通过存储过程来循环arraylist变量?SQL数据库,SQL 2008,将使用JDBC连接器连接到DataVaseAny是否知道任何解决方案?如果不能通过存储过程实现,我可以使用sql语句进行循环吗?
List<Integer> v1; //suppose this is the list that contains the values.
String s = String.join("," /*this is the delimiter. It should be the same as the one you use when you call the dbo.fnSplit() function.*/, v1);