Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Как уложить список строк (число прочтений - 3104 )
kye
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 36
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Как уложить список строк
20. Июня 2007 :: 09:18
Печать  
Возможно ли штатными средствами уложить список строк во временную таблицу? Или придется create table и кучу insert?
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Как уложить список строк
Ответ #1 - 20. Июня 2007 :: 09:33
Печать  
1) да, create table + insert
2) если строк не очень много, то можно предложить такой вариант:
по списку построить текст запроса и выполнить один запрос.
Например:
select Строка
into #tmp
from(
select 'строка1' Строка union all
select 'строка2' union all
select 'строка3' union all
select 'строка4' union all
select 'строка5'
)Строки
  

1&&2&&3
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как уложить список строк
Ответ #2 - 20. Июня 2007 :: 09:36
Печать  
хм, интересный запрос....
  
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Как уложить список строк
Ответ #3 - 20. Июня 2007 :: 10:01
Печать  
trdm писал(а) 20. Июня 2007 :: 09:36:
хм, интересный запрос....

щас придет berezdetsky и покажет еще интереснее
Улыбка
  

1&&2&&3
Наверх
 
IP записан
 
kye
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 36
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Как уложить список строк
Ответ #4 - 20. Июня 2007 :: 10:52
Печать  
сваял Улыбка
Код
Выбрать все
Процедура УложитьСписокЗначений(РС, таблица, тип, СпЗн)
	Попытка
		Рс.ВыполнитьСкалярный("DROP TABLE "+таблица);
	Исключение
	КонецПопытки;
	//Рс.ВыполнитьИнстр(ТекстЗапроса);
	Если СпЗн.РазмерСписка() = 0 Тогда
	    ТекстЗапроса =
		"CREATE TABLE "+Таблица+" (val "+Тип+")";
	Иначе
		ТекстЗапроса =
		"CREATE TABLE "+Таблица+" (val "+Тип+")
		|SET NOCOUNT ON
		|INSERT INTO "+таблица+ "
		|SELECT *
		|from
		|(";

		Для Индекс = 1 по СпЗн.РазмерСписка()-1 цикл
			ТекстЗапроса = ТекстЗапроса + "
			|select '"+СтрЗаменить(СпЗн.РазмерСписка(),"'","\'")+"' val union all "
		КонецЦикла;
		ТекстЗапроса = ТекстЗапроса + "
		|select '"+СтрЗаменить(СпЗн.РазмерСписка(),"'","\'")+"') Строки ";
	КонецЕсли;
	Рс.ВыполнитьСкалярный(ТекстЗапроса);
КонецПроцедуры
 

  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Как уложить список строк
Ответ #5 - 20. Июня 2007 :: 11:09
Печать  
Похоже ты меня не понял.
Вообще то я в своем первом ответе подразумевал варианты к применению такие как:
- либо create и множество insert'ов;
- либо, если строк немного и нет желания самому создавать таблицу, то - один "наборный" запрос.

А ты все в одном применил. Раз уж есть желание заморачиваться с созданием таблицы, определением типа колонки, то такой "наборный" подзапрос с юнионом не нужен. Технологичнее параметризированный insert.
  

1&&2&&3
Наверх
 
IP записан
 
kye
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 36
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Как уложить список строк
Ответ #6 - 20. Июня 2007 :: 11:32
Печать  
Не я понял, но мне нужен именно длина поля равная, например 30. К тому же эта инструкция не может сделать таблицу из 979 строк, придется значит insert делать
  
Наверх
 
IP записан
 
kye
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 36
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Как уложить список строк
Ответ #7 - 20. Июня 2007 :: 11:35
Печать  
А! Теперь понял  Смех
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать