|
Вопрос # 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.
Подскажите, в чем здесь проблема?
Текст простейшего кода прилагается.
Приложение: Переключить в обычный режим- CREATE PROCEDURE D1
- RETURNS (
- VCELEM INTEGER)
- AS
- BEGIN
- /* Select for all ELEMENTS for this SPLAV */
- DECLARE d cursor for
- select elem.vcelem
- from elem
- where elem.vcelem=3;
- open d;
- fetch d into VCELEM;
- END
 |
Вопрос задал: 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 (статус: 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 (статус: 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 (статус: 1-ый класс), 13 июня 2007, 15:50 [#6]:
Уфф, прошло! Правда, как то скачком, вроде вылазает сообщение об ошибке, а через пару секунд - все нормально!??? видно не слишком доработано...
Помфюк Владимир Степанович - мерси!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|