Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 627

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
При создании куксора в теле процедуры в IB (v 6.5, работаю в D7) система (EMS 3.9.5 или IBConsole) начинает ругаться, типа непонятно, что такое DECLARE:

fmCompile.quCompile:
Invalid token.Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 7, char 1.
DECLARE.

Подскажите, в чем здесь проблема?
Текст простейшего кода прилагается.

Приложение:
  1. CREATE PROCEDURE D1
  2. RETURNS (
  3. VCELEM INTEGER)
  4. AS
  5. BEGIN
  6. /* Select for all ELEMENTS for this SPLAV */
  7. DECLARE d cursor for
  8. select elem.vcelem
  9. from elem
  10. where elem.vcelem=3;
  11. open d;
  12. fetch d into VCELEM;
  13. END


Ed Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Ed (статус: 1-ый класс)
Вопрос отправлен: 13 июня 2007, 11:27
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Помфюк Владимир Степанович

Здравствуйте, Ed!
Вообще-то инструкция по курсорам пишет что должно быть так (декларация курсора как переменной):
CREATE PROCEDURE D1
RETURNS (
VCELEM INTEGER)
AS
DECLARE d cursor for
select elem.vcelem
from elem
where elem.vcelem=3;
BEGIN
/* Select for all ELEMENTS for this SPLAV */
open d;
fetch d into VCELEM;
END

Ответ отправил: Помфюк Владимир Степанович (статус: Абитуриент)
Время отправки: 13 июня 2007, 11:35
Оценка за ответ: 1

Комментарий к оценке: Не проходит! Там требует только описание переменных.

fmCompile.quCompile:
Invalid token.Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 5, char 7.
d.


Исходный код:
CREATE PROCEDURE D1
RETURNS (
    VCELEM INTEGER)
AS
DECLARE d cursor for
     select elem.vcelem
     from elem
     where elem.vcelem=3;
BEGIN
  open d;
  fetch d into VCELEM;
END

Мини-форум вопроса

Всего сообщений: 6; последнее сообщение — 13 июня 2007, 15:50; участников в обсуждении: 2.
Помфюк Владимир Степанович

Помфюк Владимир Степанович (статус: Абитуриент), 13 июня 2007, 12:00 [#1]:

А 6.5 Interbase, вообще, знает что такое курсор? А то я синтаксис читал по инструкции firebird 2.0, а IB6.5 примерно соответствует FB1.5 , а там курсоров ещё не было. Скорее всего Вам просто надо обновить Interbase (до какой именно версии, sorry, не знаю - "ушёл" на firebird очень давно).
Ed

Ed (статус: 1-ый класс), 13 июня 2007, 12:08 [#2]:

По идее IB6.5 должен знать,что такое курсор. В поставляемом с IBConsole help-e про курсор инфа есть, в книге Скляра "Введение в IB" описывается IB версий 5, 6 - там тож про курсор говорится...
Ппробую с firebird... хотя если пройдет - переносить инфу недели две...
Помфюк Владимир Степанович

Помфюк Владимир Степанович (статус: Абитуриент), 13 июня 2007, 12:14 [#3]:

Зачем две недели????????
Firebird прекрасно поднимает backup'ы interbas'a в transportable формате. В добавок копируете fbclient.dll как gds32.dll и никто не замечает подмены.
Ed

Ed (статус: 1-ый класс), 13 июня 2007, 14:16 [#4]:

Перешел на firebird 2.0. Пишу:

CREATE PROCEDURE NEW_PROCEDURE
AS
declare cc cursor for select elem.vcelem from elem;
BEGIN

END

В ответ уже не понимают, что такое select!??
fmCompile.quCompile:
Invalid token.Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 3, column 24.
select.
Помфюк Владимир Степанович

Помфюк Владимир Степанович (статус: Абитуриент), 13 июня 2007, 15:05 [#5]:

так и есть - недочитал за первым разом:
declare cc cursor for (select elem.vcelem from elem);
Ed

Ed (статус: 1-ый класс), 13 июня 2007, 15:50 [#6]:

Уфф, прошло! Правда, как то скачком, вроде вылазает сообщение об ошибке, а через пару секунд - все нормально!??? видно не слишком доработано...
Помфюк Владимир Степанович - мерси!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:59
Выполнено за 0.02 сек.