看我的存贮过程 怎么 不循环 插入 啊 好
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[proc_InsertASKPrice]
(
@askpricenum nvarchar(50),
@askname nvarchar(50),
@askcompany nvarchar(50),
@askphone nvarchar(50),
@askfex nvarchar(50),
@askremark nvarchar(4000),
@productliststr nvarchar(2500)
)
AS
BEGIN
begin tran
declare @V_LENGTHNUM int,@V_LENGTH int,@V_POS int,@V_CURRENT nvarchar(205),
@V_TEMP nvarchar(2500),@productname nvarchar(50),@productsize nvarchar(50),
@productnum nvarchar(50),@productremark nvarchar(200)
insert into askpriceinfo(askpricenum,askname,askcompany,askphone,askfex,askremark) values(@askpricenum,@askname,@askcompany,@askphone,@askfex,@askremark)
if @@error!=0
begin
rollback tran
return
end
-- productliststr='..|..|..|...#..|..|..|...#';
SET @V_LENGTH=len(@productliststr);
set @V_LENGTHNUM=len(@productliststr);
while @V_LENGTH>0
begin
SET @V_POS=charindex(@V_TEMP,'#');
SET @V_CURRENT=substring(@V_TEMP,1,@V_POS-1);
SET @V_TEMP=substring(@V_TEMP,@V_POS+1,len(@productliststr)-@V_POS+1);
SET @V_LENGTH=len(@V_TEMP);
SET @V_POS=charindex(@V_CURRENT, '|');
SET @productname=substring(@V_CURRENT,1,@V_POS-1);
SET @V_CURRENT=substring(@V_CURRENT,@V_POS+1,len(@V_CURRENT)-@V_POS+1);
SET @V_POS=charindex(@V_CURRENT, '|');
SET @productsize=substring(@V_CURRENT,1,@V_POS-1);
SET @V_CURRENT=substring(@V_CURRENT,@V_POS+1,len(@V_CURRENT)-@V_POS+1);
SET @V_POS=charindex(@V_CURRENT, '|');
SET @productnum=substring(@V_CURRENT,1,@V_POS-1);
SET @V_CURRENT=substring(@V_CURRENT,@V_POS+1,len(@V_CURRENT)-@V_POS+1);
SET @productremark=@V_CURRENT;
insert into askpriceDetails(askpricenum,productname,productsize,productnum,productremark) values(@askpricenum,@productname,@productsize,@productnum,@productremark)
if @@error!=0
begin
rollback tran
return
end
end
commit tran
END