首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

批量更新的难题,求教.解决思路

2012-01-15 
批量更新的难题,求教.如何批量更新啊,比如单个执行declare@snvarchar(20)set@sN 机械insertintochs.dbo.m

批量更新的难题,求教.
如何批量更新啊,比如单个执行
declare   @s   nvarchar(20)
set   @s=N '机械 '
insert   into   chs.dbo.mall_product   (ID,   mall_PRODUCT_NAME,)   values  
(@id,   @s);
结果是成功的,但假如要先插入记录 "机械 ",再插入记录 "五金 ",这些要插入的是一字符串,以逗号隔开的,如: "机械,五金,其他 "

用什么循环语句啊?多谢!



[解决办法]
CREATE function uf_splitstring
(
@str varchar(8000)--要分拆的字符串
,@spli varchar(10)--字符串分隔符
)
returns @retab table(istr varchar(8000))
as
begin
declare @i int
declare @splen int
select @splen=len(@spli),@i=charindex(@spli,@str)
while @i > 0
begin
insert into @retab
values(left(@str,@i-1))
select @str=substring(@str,@i+@splen,8000)
select @i=charindex(@spli,@str)
end
if @str <> ' ' insert into @retab values(@str)
return
end
GO

declare @s nvarchar(20)
set @s=N '机械,五金,其他 '
insert into chs.dbo.mall_product (ID, mall_PRODUCT_NAME)
select @id,istr from uf_splitstring(@s, ', ')
[解决办法]
---create table
create table split
(
sid int identity(1,1),
a varchar(10)
)
select * from split
--执行
declare @s varchar(8000),@s2 varchar(8000),@p_name varchar(10), @i int
select @s = '机械,五金,轴承,其他 '
select @s = @s + ', '

begin
while charindex( ', ',@s)> 0
begin
select @s2 = substring(@s,0,charindex( ', ',@s))

begin
insert into split(a) values
(@s2);
end
select @s=right(@s,len(@s)-charindex( ', ',@s))
print @s
end
end

--结果
1机械
2五金
3轴承
4其他
[解决办法]
检查是不是字段长度不够,如declare 语句,是否忘写(20)了.

热点排行