Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Вниз

Parsing error в хранимой процедуре   Найти похожие ветки 

 
Sirruf ©   (2004-04-19 18:35) [0]

Создал хранимую процедуру

CREATE PROCEDURE GETCOMMONBALANCE (
   WHOUSEID INTEGER)
RETURNS (
   WARENAME VARCHAR(20),
   BALANCE FLOAT,
   WAREUNIT VARCHAR(7))
AS
DECLARE VARIABLE WAREID INTEGER;
begin
 for select distinct WAREID from Operations
     where WHOUSEID = :WhouseID
     into :WareID
 do
   begin
     select NAME, UNIT from Goods
     where ID = :WareID
     into :WareName, :WareUnit;
     execute procedure GETBALANCE(:WhouseID, :WareID)
        returning_values :Balance;  
     if not (:Balance = 0) then (!!!)
       suspend;
   end
end

GETBALANCE - это другая хранимая процедура, отлаженная и  правильно работающая, возвращающая параметр типа Float.
При компиляции процедуры GETCOMMONBALANCE в строке (!!!) вылетает parsing error. Если закомментировать эту строку, то компиляция проходит успешно. Не могу понять, чем ему проверка на равенство нулю не подошла? :(


 
Sergey Masloff   (2004-04-19 22:14) [1]

Sirruf ©   (19.04.04 18:35)  
в IbExpert небось?
if (условие) then
 xxx;

ВСЕ условие должно быть в скобках


 
Digitman ©   (2004-04-20 08:29) [2]

if (not (Balance = 0)) then


 
Sergey_Masloff   (2004-04-20 09:52) [3]

Digitman ©   (20.04.04 08:29) [2]
>if (not (Balance = 0)) then
Ну я именно это и говорю ;-)
Дело в другом. Сейчас проверил через isql - точно требует общих скобок после if (FB 1). Я почему-то думал это IBExpert парсит что-то там (да наверное парсит потому что сообщение об ошибке не interbase-овское). Потому что у меня стойкое впечетление что IB4 это позволяла и IB5 тоже. Впрочем, не уверен так как у меня привычка к таким скобкам (после if) на уровне рефлексов ;-)


 
Соловьев ©   (2004-04-20 10:03) [4]


> select NAME, UNIT from Goods
>      where ID = :WareID

опасный код


 
Sirruf ©   (2004-04-20 11:51) [5]

Фух, ну и коварный же зверек этот IB Expert. Special thanks to Sergey Masloff и Digitman. :))
А чем опасен код

> select NAME, UNIT from Goods
>      where ID = :WareID  ?


 
Соловьев ©   (2004-04-20 12:00) [6]


> Фух, ну и коварный же зверек этот IB Expert.

это разработчики ФБ намудрили :)


> А чем опасен код

тем что может вернуть несколько записей


 
Sirruf ©   (2004-04-20 13:08) [7]

Не может, т.к. ID - primary key



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.029 c
1-1083233376
ЁПРСТ
2004-04-29 14:09
2004.05.16
Размер ComboBox`а


7-1081073322
NV-VETAL
2004-04-04 14:08
2004.05.16
DCOM. Как зарегистрировать клиента с помощью реестра?


1-1083227601
siriusP
2004-04-29 12:33
2004.05.16
Очень нужна помощь. Создание компоненты.!!!


1-1082978090
Влад Сташневский
2004-04-26 15:14
2004.05.16
Double -> Integer


1-1083225554
Dysan
2004-04-29 11:59
2004.05.16
опредиление кодировки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский