Mira esto:
declare @valores as varchar(1000)
select @valores=',a1,a2,a2334,2212,a1,a7'
declare @norden as integer
declare @valor as varchar(1000)
declare @campo1 as char(10)
declare @campo2 as char(10)
declare @campo3 as char(10)
declare @campo4 as integer
declare @campo5 as char(10)
declare @campo6 as char(10)
declare CURSOR_CAMPOS CURSOR FOR
SELECT ROW_NUMBER() OVER (ORDER BY id) AS Campos,
REPLACE( LEFT(SUBSTRING(parametro,id+1,LEN(parametro)),
case when patindex('%,%',(SUBSTRING(parametro,id+1,LEN(parametro)) ) )
=0 then 1000
else patindex('%,%',(SUBSTRING(parametro,id+1,LEN(parametro)) ) )
end ),',','') as valores
FROM ( select @valores as parametro) A INNER join nums ON
SUBSTRING(parametro,id,1) =','
open CURSOR_CAMPOS
fetch next from CURSOR_CAMPOS into @norden,@valor
WHILE @@FETCH_STATUS = 0
BEGIN
if @norden=1
select @campo1=@valor
if @norden=2
select @campo2=@valor
if @norden=3
select @campo3=@valor
if @norden=4
select @campo4=convert(integer,@valor)
if @norden=5
select @campo5=@valor
if @norden=6
select @campo6=@valor
fetch next from CURSOR_CAMPOS into @norden,@valor
end
close CURSOR_CAMPOS
DEALLOCATE CURSOR_CAMPOS
select @campo1,@campo2,@campo3,@campo4,@campo5,@campo6
Lo que yo defino como @valores seria un solo parametro que tu pasarias
al procedimiento
Aqui esta definido como variable para que lo pruebes.
Tu parametro empezaria siempre con una coma (,) o cualquier otro
caracter que usarias como separador de cada campo asi
',a1,a2,a2334,2212,a1,a7'
tienes que tener en tu base de datos de sql una tabla que se llame
nums con un solo campo llamdo id integer y clave primaria lleno con
numeros correlativos hasta el número que tu quieras pero siempre mayor
que el numero de campos de tus tablas.
Luego ya en el procedimiento definirás una variable por cada campo a
insertar y le asignas los valores en el orden que los hayas pasado en
el parametro.
yo creo que funcionará.
Saludos
Gorka