Torna al Thread
CREATE PROCEDURE dbo.proc_count_items -- Indica SEMPRE lo schema.
@textbox_items nvarchar(2050)
AS
BEGIN
SET NOCOUNT ON;
declare @occorrenze int
declare @len int
declare @index int
declare @min int
declare @pos int
declare @max int
declare @temp1 varchar(255)
declare @temp2 varchar(255)
declare @calc int
set @occorrenze= (len(@textbox_items)-len(replace(@textbox_items,'||','')))/2+1 --numero di items presenti nella stringa
set @textbox_items=replace(@textbox_items,'||','|')
set @textbox_items=replace(@textbox_items,'--','-')
set @textbox_items=@textbox_items+'|'
--controlla che il primo carattere siaà diverso da --,quindi aggiunge
--un valore '-1'
if substring(@textbox_items,1,1)= '--'
begin
set @textbox_items='-1'+@textbox_items
end
set @max=len(@textbox_items) --massima posizione
--explode della stringa
set @min = 1 --posizione di partenza
while @occorrenze > 0
begin
--CHARINDEX ( expression1 ,expression2 [ , start_location ] )
--la sub string andrà da @min a @max
--SUBSTRING ( value_expression ,start_expression , length_expression )
set @max=CHARINDEX('|',@textbox_items,@min)
set @calc=@max-@min
--set @temp=SUBSTRING(@textbox_items,@min,@calc)
--trovata la sottostringa del primo item,controllo estraggo i primi 2 campi
--campo 1
set @pos=CHARINDEX('-',@textbox_items,@min)
set @calc=@pos-@min
set @temp1=SUBSTRING(@textbox_items,@min,@calc) --valore 1
set @min=@pos+1
--campo2
set @pos=CHARINDEX('-',@textbox_items,@min)
set @calc=@pos-@min
set @temp2=SUBSTRING(@textbox_items,@min,@calc) --valore 2
--scrive nel db
insert into dbo.temp_items (web_value,sql_value) values (@temp1,@temp2)
--aggiorna @min con @max
set @min=@max+1
set @occorrenze=@occorrenze-1; --decrementa il contatore delle occorreze
end
END
GO