Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / select field1 into mfield1 / 7 сообщений из 7, страница 1 из 1
05.10.2005, 16:49
    #33306953
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select field1 into mfield1
Вызовет ли запись select field1 into mfield1... ошибку при выбранных 2 и более записях? И какую?
...
Рейтинг: 0 / 0
05.10.2005, 16:52
    #33306966
Leonid Vorontsov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select field1 into mfield1
Experiment will help...
...
Рейтинг: 0 / 0
05.10.2005, 16:53
    #33306974
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select field1 into mfield1
Как видно из вопроса я неособо разбираюсь в informix и его встроенном языке поэтому для меня написать код затруднительно. Прошу помощи.
...
Рейтинг: 0 / 0
05.10.2005, 17:01
    #33307010
Valentyn Pidburtnyi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select field1 into mfield1
Петров АндрейВызовет ли запись select field1 into mfield1... ошибку при выбранных 2 и более записях?
Да (как и любая другая СУБД).

Петров АндрейИ какую?
В данном случае:


SQL Error(-284)
__________________________________________________________
A subquery has returned not exactly one row.
...
Рейтинг: 0 / 0
05.10.2005, 20:53
    #33307556
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select field1 into mfield1
В цикле foreach ошибки не будет.

-----------------------------------------------------------
Решительный шаг вперед -- результат хорошего пинка сзади
...
Рейтинг: 0 / 0
06.10.2005, 12:25
    #33308598
Leonid Vorontsov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select field1 into mfield1
Очень расплывчато вопрос поставлен, по-моему...
Если это C, то будет выглядеть примерно так:
...
$DECLARE :cursorName CURSOR FOR SELECT anyfield INTO :anyvariable FROM anytable;
$OPEN :cursorName;
$FETCH :cursorName; // здесь вернётся 1-я строчка (никаких ошибок)
$CLOSE :cursorName;
$FREE :cursorName;
...

А если это хранимая процедура, то 1-ю строчку можно получить так:
...
FOREACH SELECT anyfield INTO anyvariable FROM anytable
EXIT FOREACH; -- Получаем 1-ю строчку и выходим из цикла
END FOREACH;
...
...
Рейтинг: 0 / 0
06.10.2005, 14:31
    #33309135
Valentyn Pidburtnyi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select field1 into mfield1
Leonid VorontsovА если это хранимая процедура, то 1-ю строчку можно получить так:
...
FOREACH SELECT anyfield INTO anyvariable FROM anytable
EXIT FOREACH; -- Получаем 1-ю строчку и выходим из цикла
END FOREACH;
...Если
SELECT anyfield INTO anyvariable FROM anytable
возвращает больше одной строки - это уже ошибка в написании этого запроса. Нужно либо в секции WHERE перечислить все поля уникального индекса (чтобы гарантированно в результате получали всегда одну строку), либо применять группировку. ИМХО.
А просто запихивать это в цикл, получая всегда первую строку (при этом кто его там знает какая эта 1-я строка по мнению Информикса) и устраняя ругатню сервера, неправильно.
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / select field1 into mfield1 / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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