a ya, si definimos que sea @ inicio de cadena y ' ' fin de cadena podemos usar un charindex y un substring :P con algo como esto:
Código SQL:
Ver originalDECLARE @query VARCHAR(MAX)
DECLARE @query2 VARCHAR(MAX)
DECLARE @x INT
DECLARE @fin INT
DECLARE @continue INT
CREATE TABLE #temp(
VALUE VARCHAR(MAX)
)
SET @x=1
SET @query='select * FROM TABLA WHERE LOQUESEA = @LOQUESEA AND ALGOMAS = @ALGOMAS variable=@variable otravariable=@aquimero '
while @x<=100
BEGIN
print 'entra'
INSERT INTO #temp
SELECT SUBSTRING(@query,CHARINDEX('@',@query,1),charindex(' ',@query,CHARINDEX('@',@query,1))-CHARINDEX('@',@query,1))
SELECT @query2=SUBSTRING(@query,charindex(' ',@query,CHARINDEX('@',@query,1)),LEN(@query))
SELECT @continue=charindex(' ',@query,CHARINDEX('@',@query,1))
SELECT @fin=LEN(@query)+1
IF @continue=@fin
SET @x=100
IF @x<>100
BEGIN
INSERT INTO #temp
SELECT SUBSTRING(@query2,CHARINDEX('@',@query2,1),charindex(' ',@query2,CHARINDEX('@',@query2,1))-CHARINDEX('@',@query2,1))
SELECT @query2=SUBSTRING(@query2,charindex(' ',@query2,CHARINDEX('@',@query2,1)),LEN(@query2))
SELECT @continue=charindex(' ',@query2,CHARINDEX('@',@query2,1))
SELECT @fin=LEN(@query2)+1
END
SET @query=@query2
SET @x=@x+1
IF @continue=@fin
SET @x=100
END
SELECT * FROM #temp
DROP TABLE #temp
----------------------Resultado--------------------------------
@LOQUESEA
@ALGOMAS
@variable
@aquimero
Lo unico que debes de tener en cuenta es que siempre te va a buscar @ como inicio y ' ' como fin de busqueda de la variable, si te fijas en la cadena que puse
'select * FROM TABLA WHERE LOQUESEA = @LOQUESEA AND ALGOMAS = @ALGOMAS variable=@variable otravariable=@aquimero '
la ultima variable tiene un espacio en blanco antes de la comilla simple, si no lo pones pues no junciona jajajajaja :P
saludos!