Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Странная ошибка InterBase 6.0 (или TStoredProc) / 4 сообщений из 4, страница 1 из 1
14.02.2004, 14:48
    #32409550
tomek2002
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная ошибка InterBase 6.0 (или TStoredProc)
Вопрос по Interbase такой.
Пуская я использую стандартные компоненты для доступа к БД Interbase (TStoredProc, TQuery, TDatabase). Конечно, так делать не вполне корректно, но все же.
У меня есть база 1.gdb, в ней 3 таблицы и одна хранимая процедура, которая имеет вид :


СREATE PROCEDURE SUMSALARY (IPMIN FLOAT)
RETURNS (OPSUM FLOAT)
AS
declare variable summ float;
declare variable n float;
begin
summ=0;
for select salary from customers
where salary>=:ipMin into n
do summ = summ + n;
opSum=summ;
end ^

В общем, обычная процедура подсчета суммы зарплаты для сотрудников.
На формочке экземпляры TDataBase, TQuery и TStoredProc связаны соответствующим образом.
Я регинюсь к базе через обработчик OnLogin, и данные отображаются в Gridе. Теперь пишу такой обработчик для Button1 :

with storedproc1 do begin
parambyname('IPMIN').value:=20;
prepare;
execProc;
label1.Caption:=inttostr(parambyname('opsum').value);
end;

И вот тут-то какая-то лажа получается. Входной параметр IPMIN не найден. Хотя у меня свойства компоненты TStoredProc настроены правильно (SessionName, StoredProcName и DataBaseName) - сомневаться не приходится. Далее самое забавное. После хитрых манипуляций - типа переконнект к базе, а также повторного выбора значения параметра StoredProcName компоненты TStoredProc, мне все-таки удается без ошибки получить в Label1 значение вожделенной суммы. Кстати, в свойтве Params компоненты TStoredProc все ОК, есть два параметры - один входной, другой - выходной.
В ЧЕМ ГЛЮК ?????????
...
Рейтинг: 0 / 0
15.02.2004, 13:02
    #32409748
Глюк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная ошибка InterBase 6.0 (или TStoredProc)
Все один сплошной ГЛЮК :)
Во-первых: не используйте 6-ю версию InterBase.
Во-вторых: Вы правильно заметили - не стоит использовать BDE-компоненты.
В-третьих: незачем городить процедуру там, где можно обойтесь элементарным запросом
Код: plaintext
1.
select SUM(salary) from customers 
where salary>=:ipMin

В-четвертых: в приведенной пароцедуре отсутствует оператор SUSPEND
В-пятых: процедуру которая ничего не делает, кроме возвращения resultset-a следует запускать методом Open, а не execProc.
...
Рейтинг: 0 / 0
16.02.2004, 16:34
    #32410758
IgorK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная ошибка InterBase 6.0 (или TStoredProc)
авторВо-первых: не используйте 6-ю версию InterBase.
Использовать очень даже можно, если знать по ее известные глюки. Например если прочитать это http://www.ibase.ru/devinfo/ibstp.htm то все будет ОК!
...
Рейтинг: 0 / 0
16.02.2004, 17:33
    #32410881
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странная ошибка InterBase 6.0 (или TStoredProc)
Нихрена оно Ок не будет.
Ибо глюки только этим не ограничиваются.
Почитай, сколько их было исправлено командой FireBird .
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Странная ошибка InterBase 6.0 (или TStoredProc) / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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