![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| YanaKass |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 29.4.2012 Репутация: нет Всего: нет |
Добрый вечер!!
Только недавно начала знакомство с perl, и сейчас не могу разобраться с ошибкой. Написано следующее:
Ошибка происходит во внутреннем execute(). Причем по отдельности оба курсора работают правильно. Помогите, пожалуйста Это сообщение отредактировал(а) JackYF - 30.4.2012, 23:02 |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
какая ошибка?
|
|||
|
||||
| YanaKass |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 29.4.2012 Репутация: нет Всего: нет |
InterBase::st finish failed: The cursor identified in a FETCH or CLOSE statement is not open
|
|||
|
||||
| DurRandir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 335 Регистрация: 27.9.2009 Репутация: 14 Всего: 17 |
a) use strict
б) finish() - не нужен в) проверяйте результат работы любого вызова к базе г) используйте плейсхолдеры, если запрос содержит переменные |
|||
|
||||
| YanaKass |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 29.4.2012 Репутация: нет Всего: нет |
точно...
DurRandir, спасибо вам большое!! Во-первых, за ваши советы, код теперь выглядит приличнее, а во-вторых, действительно, ошибка ломалась на случае, когда во втором запросе count(*)=0. Как-то и не думала, что на этом оно может сломаться... Еще раз спасибо! |
|||
|
||||
| YanaKass |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 29.4.2012 Репутация: нет Всего: нет |
Поменяла первый запрос, чтобы во втором гарантированно нашлись строки. Заодно еще немного подправила. Но теперь возникает такая же ошибка, опять во внутреннем execute, но уже на третьем проходе... То есть для первых двух результатов все хорошо. Проверила, запрос на третьем шаге данные возвращает. Вот так теперь выглядит код:
|
||||
|
|||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 22 Всего: 39 |
нужно вынести за цикл В этом и смысл prepare. Подготовили запрос 1 раз, а выполнили (execute) много. |
|||
|
||||
| YanaKass |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 29.4.2012 Репутация: нет Всего: нет |
Pfailed,
поэтому и внесла в цикл, что иначе возникает ошибка The InterBase::st execute failed: The cursor identified in a OPEN statement is alredy open |
|||
|
||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 22 Всего: 39 |
потому что нужно делать finish перед следующим execute
что-то вроде этого
|
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |