Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Горячая тема (более 10 ответов) Работа с курсорами (число прочтений - 5252 )
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Работа с курсорами
Ответ #15 - 23. Мая 2012 :: 10:53
Печать  
(14) что выполнить
если у меня в справочнике нет sc14

и почему при добавлению в таблицу помещаешь туда и папки и элементы ?

метод выполнить() считается устаревшим и в новых программах его использовать не рекомендуется
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Работа с курсорами
Ответ #16 - 23. Мая 2012 :: 11:04
Печать  
(15) и зачем нужен 15
если именно этот случай то елементарно все без курсора делается
однм insert

  
Наверх
 
IP записан
 
jjjj1111
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 12
Зарегистрирован: 11. Мая 2012
Re: Работа с курсорами
Ответ #17 - 23. Мая 2012 :: 11:42
Печать  
Z1 писал(а) 23. Мая 2012 :: 10:53:
(14) что выполнить
если у меня в справочнике нет sc14

А найти достаточно большой справочник нельзя?
  
Наверх
 
IP записан
 
jjjj1111
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 12
Зарегистрирован: 11. Мая 2012
Re: Работа с курсорами
Ответ #18 - 23. Мая 2012 :: 11:44
Печать  
Z1 писал(а) 23. Мая 2012 :: 11:04:
если именно этот случай то елементарно все без курсора делается
однм insert

Нет - это не тот случай, это тест. Ту задачу с которой я начинал я описал в 11 посте.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Работа с курсорами
Ответ #19 - 23. Мая 2012 :: 12:12
Печать  
jjjj1111 писал(а) 23. Мая 2012 :: 11:44:
Z1 писал(а) 23. Мая 2012 :: 11:04:
если именно этот случай то елементарно все без курсора делается
однм insert

Нет - это не тот случай, это тест. Ту задачу с которой я начинал я описал в 11 посте.

Так ответ уже давно дан.
Внимательно прочти пост 3(там ответ) и если сделаешь
как там написано то отличий не будет.
  
Наверх
 
IP записан
 
jjjj1111
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 12
Зарегистрирован: 11. Мая 2012
Re: Работа с курсорами
Ответ #20 - 23. Мая 2012 :: 12:18
Печать  
Цитата:
Так ответ уже давно дан.
Внимательно прочти пост 3(там ответ) и если сделаешь
как там написано то отличий не будет.

Именно так и решил. Однако интересует вопрос почему так обрезаются итоги. QA-60000 строк, 1С++-150-180 строк. Боюсь что причина может вылезти где нибудь еще.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Работа с курсорами
Ответ #21 - 23. Мая 2012 :: 12:32
Печать  
jjjj1111 писал(а) 23. Мая 2012 :: 12:18:
Цитата:
Так ответ уже давно дан.
Внимательно прочти пост 3(там ответ) и если сделаешь
как там написано то отличий не будет.

Именно так и решил. Однако интересует вопрос почему так обрезаются итоги. QA-60000 строк, 1С++-150-180 строк. Боюсь что причина может вылезти где нибудь еще.

скорее всего разная область видимости(declare) переменных - времени жизни

  
Наверх
 
IP записан
 
jjjj1111
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 12
Зарегистрирован: 11. Мая 2012
Re: Работа с курсорами
Ответ #22 - 23. Мая 2012 :: 12:54
Печать  
Цитата:
скорее всего разная область видимости(declare) переменных - времени жизни

Мне кажется, что это страничный обмен и/или ограничение выполнитьинструкцию на мультистейтмент. В любом случае хотелось бы узнать от гуру. Посему и пришел сюда.
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Работа с курсорами
Ответ #23 - 24. Мая 2012 :: 02:53
Печать  
jjjj1111 писал(а) 23. Мая 2012 :: 10:11:
Код
Выбрать все
	РС.выполнить("Create table #TempTable (TovID char(9),pr float)");

	ТекстЗапроса="
	|use torg
	|declare @tov char(9),@price float,@curs_rows bigint,@counter bigint
	|DECLARE curs CURSOR global static FOR
	|SELECT sc14.ID,sc14.sp153 from sc14	  
	|OPEN curs    
	|set @curs_rows=@@cursor_rows
	|set @counter=0  
	|WHILE @counter<@curs_rows
	|BEGIN
	|	set @counter=@counter+1
	|	FETCH absolute @counter FROM curs into @tov,@price
	|	INSERT INTO #TempTable VALUES (@tov,@price)
	|END;									  

	|Close curs
	|deallocate curs
	|";			  

	РС.выполнить(ТекстЗапроса);	  

	т=РС.выполнитьинструкцию("SELECT tovid,pr FROM #TempTable");  
	т.выбратьстроку();
	сообщить(РС.выполнитьскалярный("SELECT count(*) FROM #TempTable"));
	РС.выполнить("drop table #TempTable");
 




Не совсем въезжаю, как ты курсором бегаешь...
Все разы, когда приходилось юзать, писал примерно так:

Код
Выбрать все
OPEN curs

FETCH NEXT FROM curs
INTO @tov,@price

WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO #TempTable VALUES (@tov,@price)

FETCH NEXT FROM curs
INTO @tov,@price
END
 



Хотя, тут возможен вариант "меня так научили"...
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать