powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Динамическое формирование имнени поля в запросе.
7 сообщений из 7, страница 1 из 1
Динамическое формирование имнени поля в запросе.
    #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
Динамическое формирование имнени поля в запросе.
    #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
Динамическое формирование имнени поля в запросе.
    #33680810
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень не советую так делать.
0) Использование EXEC ведет к проблемам с правами. ВСЕ пользователи, которые будут использовать эту хранимую процедуру, должны будут иметь непосредственно права на все действия, выподняемые в EXEC().

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

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

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

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

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

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


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