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
GOdeclare @s nvarchar(20)
set @s=N'机械,五金,其他'
insert into chs.dbo.mall_product (ID, mall_PRODUCT_NAME)
select @id,istr from uf_splitstring(@s,',')
(
@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
GOdeclare @s nvarchar(20)
set @s=N'机械,五金,其他'
insert into chs.dbo.mall_product (ID, mall_PRODUCT_NAME)
select @id,istr from uf_splitstring(@s,',')
declare @pcname as nvarchar(100) --分类的名称!
declare @maxmpcid as int --当前已有mall_product_category_id最大值+1
declare @maxOid as int --当前已有同级DISPLAY_ORDER最大值+1
declare @websiteid as int --当前站点的website_idset @pcname = N'机械'
set @maxmpcid = ((select max(mall_product_category_id) from endiva_chs.dbo.mall_product_category)+1)
set @maxOid = (select max(DISPLAY_ORDER) from endiva_chs.dbo.mall_product_category WHERE parent_category_id=1766)
set @websiteid = (SELECT website_id FROM endiva_chs.dbo.COMPANY WHERE (WEBSITE_NAME = 'HN_PORTAL'))if @maxOid is null
set @maxOid = 0;insert into endiva_chs.dbo.mall_product_category (WEBSITE_ID, mall_PRODUCT_CATEGORY_ID, mall_PRODUCT_CATEGORY_NAME, PARENT_CATEGORY_ID, ACTIVE_IND, DISPLAY_ORDER) values
(@websiteid, @maxmpcid, @pcname, 1766, N'Y', @maxOid+1);我想要将
set @pcname = N'机械
改为
set @pcname = N'机械,五金,其他'
从而实现批量更新,怎么做??多谢!!
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 @pcname as nvarchar(100) --分类的名称!
declare @maxmpcid as int --当前已有mall_product_category_id最大值+1
declare @maxOid as int --当前已有同级DISPLAY_ORDER最大值+1
declare @websiteid as int --当前站点的website_id
--ADD
declare @s varchar(8000),@s2 varchar(8000),@p_name varchar(10), @i int
set @s = N'机械,五金,其他'--set @pcname = N'机械'
set @maxmpcid = ((select max(mall_product_category_id) from endiva_chs.dbo.mall_product_category)+1)
set @maxOid = (select max(DISPLAY_ORDER) from endiva_chs.dbo.mall_product_category WHERE parent_category_id=1766)
set @websiteid = (SELECT website_id FROM endiva_chs.dbo.COMPANY WHERE (WEBSITE_NAME = 'HN_PORTAL'))--ADD
select @s = @s + ','if @maxOid is null
set @maxOid = 0;
begin
while charindex(',',@s)>0
begin
select @s2 = substring(@s,0,charindex(',',@s))
begin
---------begin insert
insert into endiva_chs.dbo.mall_product_category (WEBSITE_ID, mall_PRODUCT_CATEGORY_ID, mall_PRODUCT_CATEGORY_NAME, PARENT_CATEGORY_ID,
ACTIVE_IND, DISPLAY_ORDER) values (@websiteid, @maxmpcid, @s2, 1766, N'Y', @maxOid+1);
---------end
end
select @s=right(@s,len(@s)-charindex(',',@s))
print @s
end
end-- 噢 =。= 噢