当前位置:编程学习 > C#/ASP.NET >>

求一批量更新SQL

表table中有以下字段
id,name,order
1   A     0
2   B     0
3   C     0
4   D     0
5   E     0
6   F     1

如果根据提交ID,更新name和order内容

比如

id,name,order
1   AA     3
2   BA     1
3   AC     6
4   SE     7
5   SEF    2
.....

--------------------编程问答-------------------- 没看懂 --------------------编程问答-------------------- update table set name=参数, order=参数 where id in(1,2,3,4,5...)
不知道是不是这样的需求 --------------------编程问答-------------------- 相当于



只是不用选中,排序和名称以及URL的内容更新掉 --------------------编程问答-------------------- http://blog.163.com/fengchen618@126/blog/static/140014879201110220119564/ --------------------编程问答-------------------- http://blog.163.com/fengchen618@126/blog/static/140014879201110220119564/ --------------------编程问答-------------------- 写一个更新数据库的函数

循环ID调用函数

然后用数据库事物一起提交

失败的话就事物回滚 --------------------编程问答-------------------- http://djy252.blog.163.com/blog/static/10342838320129302416799/ 刚看到帖子,于是写了篇帖子,看下。批量更新,存储过程就1字符串参数(sqlserver) --------------------编程问答-------------------- http://topic.csdn.net/u/20120627/18/b6d16793-ae0b-4a11-bf85-9e647b2452fb.html

其实我想要这样的效果

--------------------编程问答-------------------- 用SQL语句如何实现?
或者使用存储过程也可以。

主要是因为传进来的也是同样的字符串,

id=1,2,3,4,5...
xx=asdf,sadf,as,se,fe... --------------------编程问答--------------------
引用 9 楼  的回复:
用SQL语句如何实现?
或者使用存储过程也可以。

主要是因为传进来的也是同样的字符串,

id=1,2,3,4,5...
xx=asdf,sadf,as,se,fe...

要灵活运用啊。如果你想把id和xx作为参数传入的话,
还需要一个函数或者一个方法,就是讲字符串分割。函数我有

[code]

ALTER FUNCTION [ufn_ParseString](
    @Str nvarchar(max), --含字符串的字符串
@Col nvarchar(5) -- 分隔符 如 |
)
RETURNS @Result TABLE (Row nvarchar(MAX))
AS
BEGIN

DECLARE  @Row nvarchar(max)  --一行数据
,@Pos int        
;
--开始提取
SELECT @Pos=CharIndex(@Col, @Str);
WHILE @Pos>0
BEGIN
    --提取一行
    SELECT @Row=SUBSTRING(@Str, 1, @Pos - 1);

INSERT @Result
SELECT @Row;

--去掉此行
SELECT @Str=STUFF(@Str, 1, LEN(@Row+@Col), '');
--继续处理
SELECT @Pos=CharIndex(@Col, @Str);
END
--插入最后一行
INSERT @Result
SELECT @Str;
RETURN 

END
[/code]

SELECT ufn_ParseString('1,2,3,4,5,6',',')

那样你需要调用多次,然后在合并。
还不如用我给你的地址。利用解析XML批量更新 --------------------编程问答--------------------
引用 9 楼  的回复:
用SQL语句如何实现?
或者使用存储过程也可以。

主要是因为传进来的也是同样的字符串,

id=1,2,3,4,5...
xx=asdf,sadf,as,se,fe...

要灵活运用啊。如果你想把id和xx作为参数传入的话,
还需要一个函数或者一个方法,就是讲字符串分割。函数我有

[code]

ALTER FUNCTION [ufn_ParseString](
    @Str nvarchar(max), --含字符串的字符串
@Col nvarchar(5) -- 分隔符 如 |
)
RETURNS @Result TABLE (Row nvarchar(MAX))
AS
BEGIN

DECLARE  @Row nvarchar(max)  --一行数据
,@Pos int        
;
--开始提取
SELECT @Pos=CharIndex(@Col, @Str);
WHILE @Pos>0
BEGIN
    --提取一行
    SELECT @Row=SUBSTRING(@Str, 1, @Pos - 1);

INSERT @Result
SELECT @Row;

--去掉此行
SELECT @Str=STUFF(@Str, 1, LEN(@Row+@Col), '');
--继续处理
SELECT @Pos=CharIndex(@Col, @Str);
END
--插入最后一行
INSERT @Result
SELECT @Str;
RETURN 

END
[/code]

SELECT ufn_ParseString('1,2,3,4,5,6',',')

那样你需要调用多次,然后在合并。
还不如用我给你的地址。利用解析XML批量更新 --------------------编程问答--------------------
引用 11 楼  的回复:
引用 9 楼  的回复:

用SQL语句如何实现?
或者使用存储过程也可以。

主要是因为传进来的也是同样的字符串,

id=1,2,3,4,5...
xx=asdf,sadf,as,se,fe...


Create FUNCTION [ufn_ParseString](
    @Str nvarchar(max), --含字符串的字符串
@Col nvarchar(5) -- 分隔符 如 |
)
RETURNS @Result TABLE (Row nvarchar(MAX))
AS
BEGIN

DECLARE  @Row nvarchar(max)  --一行数据
,@Pos int        
;
--开始提取
SELECT @Pos=CharIndex(@Col, @Str);
WHILE @Pos>0
BEGIN
    --提取一行
    SELECT @Row=SUBSTRING(@Str, 1, @Pos - 1);

INSERT @Result
SELECT @Row;

--去掉此行
SELECT @Str=STUFF(@Str, 1, LEN(@Row+@Col), '');
--继续处理
SELECT @Pos=CharIndex(@Col, @Str);
END
--插入最后一行
INSERT @Result
SELECT @Str;
RETURN 

END
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,