Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Цикл  [new]
Pabl0
Member

Откуда:
Сообщений: 265
Подскажите почему у меня зацикливается цикл?

	
SET @P1 = 0
SET @P2 = 3
	
	
	WHILE @P1 < @P2
	BEGIN
		SELECT 'Привет Леша'
	END


Должен же вывести 3 раза эту запись, правильно?
15 июл 16, 10:32    [19412878]     Ответить | Цитировать Сообщить модератору
 Re: Цикл  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Pabl0,

ну вы как-то меняйте @P1
15 июл 16, 10:33    [19412884]     Ответить | Цитировать Сообщить модератору
 Re: Цикл  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Pabl0
Подскажите почему у меня зацикливается цикл?

	
SET @P1 = 0
SET @P2 = 3
	
	
	WHILE @P1 < @P2
	BEGIN
		SELECT 'Привет Леша'
	END



Должен же вывести 3 раза эту запись, правильно?
А что меняется от одного шага цикла до другого?
Разве @P1 не остаётся меньше @P2 до второго пришествия?
15 июл 16, 10:33    [19412885]     Ответить | Цитировать Сообщить модератору
 Re: Цикл  [new]
xenix
Guest
SET @P1 = 0
SET @P2 = 3
	
	
	WHILE @P1 < @P2
	BEGIN
		SELECT 'Привет Леша';
                SELECT @P1=@P1+1;
	END
15 июл 16, 10:35    [19412895]     Ответить | Цитировать Сообщить модератору
 Re: Цикл  [new]
Pabl0
Member

Откуда:
Сообщений: 265
Теперь выводит как надо, только как сделать что бы в строку выводило?

	SET @P1 = 1
	SET @P2 = (SELECT dbo.GETWORDCOUNT ((select T.Name FROM StaffList S, #t1 T WHERE S.JobID = T.ID and S.ActorID = @Actor), ' '))
	
	
	WHILE @P1 <= @P2
	BEGIN
		SELECT dbo.GETWORDNUM (T.Name , @P1,' ')
		FROM StaffList S, #t1 T
		WHERE S.JobID = T.ID and S.ActorID = @Actor
		SELECT @P1=@P1+1;
		
	END
15 июл 16, 10:57    [19413041]     Ответить | Цитировать Сообщить модератору
 Re: Цикл  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Pabl0,
DECLARE @Value VARCHAR(MAX) 

SELECT @Value = @Value + GETWORDNUM (T.Name , @P1,' ')
FROM ....



SELECT @Value
15 июл 16, 11:04    [19413081]     Ответить | Цитировать Сообщить модератору
 Re: Цикл  [new]
Pabl0
Member

Откуда:
Сообщений: 265
TaPaK, не фурычит, в столбец выдает и вообще Null
15 июл 16, 11:13    [19413154]     Ответить | Цитировать Сообщить модератору
 Re: Цикл  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Pabl0,

и как вы написали?
15 июл 16, 11:44    [19413429]     Ответить | Цитировать Сообщить модератору
 Re: Цикл  [new]
o-o
Guest
Pabl0,

дак инициализировать кто будет?
изначально же NULL, хоть заскладывайся
15 июл 16, 11:45    [19413437]     Ответить | Цитировать Сообщить модератору
 Re: Цикл  [new]
o-o
Guest
TaPaK
Pabl0,

и как вы написали?

скопипастил как есть, как же еще
"Вы такие неприличные вопросы задаете… прямо неудобно отвечать…"
15 июл 16, 11:46    [19413455]     Ответить | Цитировать Сообщить модератору
 Re: Цикл  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
o-o
Pabl0,

дак инициализировать кто будет?
изначально же NULL, хоть заскладывайся

та вообще жуть, всеобщее желание копипастить и всё...
15 июл 16, 11:51    [19413503]     Ответить | Цитировать Сообщить модератору
 Re: Цикл  [new]
Pabl0
Member

Откуда:
Сообщений: 265
	WHILE @P1 <= @P2
	BEGIN
		SELECT @Value = @Value +  dbo.GETWORDNUM (T.Name , @P1,' ')
		FROM StaffList S, #t1 T
		WHERE S.JobID = T.ID and S.ActorID = @Actor
		SELECT @P1=@		
		SELECT @Value
	END[/url]
15 июл 16, 11:51    [19413506]     Ответить | Цитировать Сообщить модератору
 Re: Цикл  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Pabl0,

lol...
15 июл 16, 11:52    [19413513]     Ответить | Цитировать Сообщить модератору
 Re: Цикл  [new]
Pabl0
Member

Откуда:
Сообщений: 265
Вот так сделал, работает.

	SET @P1 = 1
	SET @P2 = (SELECT dbo.GETWORDCOUNT ((select T.Name FROM StaffList S, #t1 T WHERE S.JobID = T.ID and S.ActorID = @Actor), ' '))	
	SET @Value = ''
	
	WHILE @P1 <= @P2
	BEGIN
		--SELECT dbo.GETWORDNUM (T.Name , @P1,' '), dbo.Get_Declination(1, dbo.GETWORDNUM (T.Name , @P1,' '), 1, 1),
		
		 --CASE SUBSTRING(dbo.GETWORDNUM (T.Name , @P1,' '), len(dbo.GETWORDNUM (T.Name , @P1,' '))-1, 2) WHEN 'ий' THEN substring(dbo.GETWORDNUM (T.Name , @P1,' '),1,len(dbo.GETWORDNUM (T.Name , @P1,' '))-2)+'его' WHEN 'ов' THEN dbo.GETWORDNUM (T.Name , @P1,' ') WHEN 'та' THEN dbo.GETWORDNUM (T.Name , @P1,' ') WHEN 'ла' THEN dbo.GETWORDNUM (T.Name , @P1,' ') /* WHEN case(SUBSTRING(dbo.GETWORDNUM (T.Name , @P1,' '), len(dbo.GETWORDNUM (T.Name , @P1,' '))-2, 3)) WHEN 'ной' THEN dbo.GETWORDNUM (T.Name , @P1,' ') END THEN dbo.GETWORDNUM (T.Name , @P1,' ') */ ELSE dbo.Get_Declination(1, dbo.GETWORDNUM (T.Name , @P1,' '), 1, 1) END AS T

		SELECT @Value = @Value + ' '+ CASE SUBSTRING(dbo.GETWORDNUM (T.Name , @P1,' '), len(dbo.GETWORDNUM (T.Name , @P1,' '))-1, 2) WHEN 'ий' THEN substring(dbo.GETWORDNUM (T.Name , @P1,' '),1,len(dbo.GETWORDNUM (T.Name , @P1,' '))-2)+'его' WHEN 'ов' THEN dbo.GETWORDNUM (T.Name , @P1,' ') WHEN 'та' THEN dbo.GETWORDNUM (T.Name , @P1,' ') WHEN 'ла' THEN dbo.GETWORDNUM (T.Name , @P1,' ') /* WHEN case(SUBSTRING(dbo.GETWORDNUM (T.Name , @P1,' '), len(dbo.GETWORDNUM (T.Name , @P1,' '))-2, 3)) WHEN 'ной' THEN dbo.GETWORDNUM (T.Name , @P1,' ') END THEN dbo.GETWORDNUM (T.Name , @P1,' ') */ ELSE dbo.Get_Declination(1, dbo.GETWORDNUM (T.Name , @P1,' '), 1, 1) END
		FROM StaffList S, #t1 T
		WHERE S.JobID = T.ID and S.ActorID = @Actor
		SELECT @P1=@P1+1;
		
		
	END
	
	SELECT @Actor AS ActorID, @Value AS Name
15 июл 16, 13:28    [19414223]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить