Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Динамическое формирование имнени поля в запросе. / 7 сообщений из 7, страница 1 из 1
20.04.2006, 12:54
    #33679020
luv
luv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое формирование имнени поля в запросе.
Добрый день.
Помогите решить проблему с выполнением запроса сформированного динамически. Есть таблица с большим количеством полей. Нужно в хранимой процедуре перебрать поля в цикле.

declare @dtmes datetime
declare @col_name varchar(30)
declare @ID numeric(18)
declare @SQL2 varchar(16384)
set @dtmes= дата
set @ID=1014

set @col_name = 'sgn'+convert(varchar(4),@ID)
set @val= (select @col_name from report where dtmes = @dtmes)

в результате переменной @val присваивается значение sgn1014
Как сделать чтобы в этом запросе переменная @col_name воспринималось как наименование поля, а не как константа??

есть другой вариант:
set @SQL2 = 'select '+@col_name+' from report where dtmes = "'+convert(varchar,@dtmes)+'"'
exec (@SQL2)
а как тогда получить значение которое возвратил запрос??

ASE12.5.2
...
Рейтинг: 0 / 0
20.04.2006, 14:02
    #33679298
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое формирование имнени поля в запросе.
Код: plaintext
1.
2.
3.
4.
create table #col_value( value VALUE_TYPE )

execute( 'insert into #col_value select '+@col_name+' from report...

select @val=value from #col_value
...
Рейтинг: 0 / 0
20.04.2006, 22:36
    #33680810
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое формирование имнени поля в запросе.
Очень не советую так делать.
0) Использование EXEC ведет к проблемам с правами. ВСЕ пользователи, которые будут использовать эту хранимую процедуру, должны будут иметь непосредственно права на все действия, выподняемые в EXEC().

1) Если вам нужно в цикле перебрать поля таблицы, значит вы уже что-то делаете не так. Запись -- это не массив, это кортеж. Выполняя реляционные операции вам не нужно перебирать колонки, и соответственно наоборот, перебирая колонки вы выполняете нереляционные операции. А ASE - реляционная СУБД, на ней надо работать реляционными операциями.

Подумайте о редизайне этого дела, надо сделать столбцы строками, тогда все у вас будет хорошо сразу.
...
Рейтинг: 0 / 0
21.04.2006, 06:29
    #33681045
luv
luv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое формирование имнени поля в запросе.
MasterZiv :
Понятно. Поля строками сделать не получиться , так как записи будут добавляться с течением времени а поля не будут. Просто хотелось уменьшить размер кода.
...
Рейтинг: 0 / 0
21.04.2006, 11:42
    #33681851
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое формирование имнени поля в запросе.
luvMasterZiv :
Понятно. Поля строками сделать не получиться , так как записи будут добавляться с течением времени а поля не будут.

Чем тебя смущает наличие фиксированного во времени количества СТРОК, а не столбцов ?
...
Рейтинг: 0 / 0
24.04.2006, 06:27
    #33685187
luv
luv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое формирование имнени поля в запросе.
ээээ помойму ты противоречишь сам себе
MasterZiv 1) Если вам нужно в цикле перебрать поля таблицы, значит вы уже что-то делаете не так.

MasterZiv Чем тебя смущает наличие фиксированного во времени количества СТРОК, а не столбцов ?

Тем что число полей в моей задаче конечно.А время бесконечно.а в таблицы добавляют записи,а не поля.
...
Рейтинг: 0 / 0
24.04.2006, 09:38
    #33685336
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое формирование имнени поля в запросе.
luvээээ помойму ты противоречишь сам себе
Тем что число полей в моей задаче конечно.А время бесконечно.а в таблицы добавляют записи,а не поля.

Нету противоречий. Ну будут у тебя добавлятся не N записей, а N*k, где k - некая константа. В чем проблема ?
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Динамическое формирование имнени поля в запросе. / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]