-2
Мне нужно выполнить цикл, пока @ss не вернет null или число «-». так пробовал ниже кодКак сделать while loop in sql
DECLARE @i int,@ss varchar(20)
SET @i=1;
--WHILE (@ss =null)
WHILE(@i<=3)// i need to assign i value dynamically
BEGIN
SET @ss =(SELECT dbo.GetStringPart('-','hello-world',@i))
PRINT @ss
SET @i [email protected]+1
END
Функция: GetStringPart
ALTER FUNCTION [dbo].[GetStringPart] (@sep varchar(1), @s varchar(512),@pos int)
RETURNS VARCHAR(200)
AS
BEGIN
DECLARE @output VARCHAR(200)
;WITH Pieces(pn, start, stop) AS (
SELECT 1, 1, CHARINDEX(@sep, @s)
UNION ALL
SELECT pn + 1, stop + 1, CHARINDEX(@sep, @s, stop + 1)
FROM Pieces
WHERE stop > 0
)
SELECT
@output=SUBSTRING(@s, start, CASE WHEN stop > 0 THEN stop-start ELSE 512 END)
FROM Pieces
WHERE [email protected]
RETURN @Output
END
как сделать it.thanks ...
почему вы не возвращает таблицу из вашей функции вместо этого запутанного кода? –