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

Вниз

Пользователям IB Expert.   Найти похожие ветки 

 
TohaNik ©   (2004-05-31 13:47) [0]

Подскажите, в чем проблема.
Вот часть объявления ХП.

CREATE PROCEDURE PAU_SUM_NEW (
   NAR_ID INTEGER,
   D DATE,
   CUR SMALLINT,
   PE_ID INTEGER,
   CNT_ID INTEGER,
   COMIS SMALLINT,
   NAR_CORRECT INTEGER)
RETURNS
.......

Из другой ХП вызываю строкой

execute procedure pau_sum_new(:NAR_ID,:PAY_DATE,1,null,1,0,null)

переменные объявлены как

DECLARE VARIABLE NAR_ID INTEGER;
DECLARE VARIABLE PAY_DATE DATE;

В результате в экперте получаю
  Invalid token.
  Invalid request BLR at offset 732
  Parameter mismatch for for procedure PAU_SUM_NEW


 
Johnmen ©   (2004-05-31 13:52) [1]

Соображения:
1. CAST(null AS INTEGER)
2. Где RETURNING_VALUES ? М.б. правильнее SELECT ?
...


 
Alexandr   (2004-05-31 13:52) [2]

ну а где returns переменные?


 
TohaNik ©   (2004-05-31 14:16) [3]

> 1. CAST(null AS INTEGER)
  не соображу зачем да и передаться должен именно NULL, но попробовал - ошибка таже.
> ну а где returns переменные?

полностью объявление

CREATE PROCEDURE PAU_SUM_NEW (
   NAR_ID INTEGER,
   D DATE,
   CUR SMALLINT,
   PE_ID INTEGER,
   CNT_ID INTEGER,
   COMIS SMALLINT,
   NAR_CORRECT INTEGER)
RETURNS (
   TOTALSUM NUMERIC(15,4),
   PARTSUM NUMERIC(15,4),
   PDVSUM NUMERIC(15,4),
   TOTALSUMPDV NUMERIC(15,4),
   NARADDSUM NUMERIC(15,4),
   COURCE NUMERIC(10,6),
   SCALE NUMERIC(15,1),
   SUM_NAR_POS_UAN NUMERIC(10,9),
   PE_DECLDATE DATE,
   TI_NUM VARCHAR(10),
   TI_DATE DATE,
   PAY_NUM VARCHAR(32),
   PAY_DATE DATE)
AS
.....

Возникла необходимость увеличить цены и пересчитать счета

CREATE PROCEDURE PRICE_UPDATE
AS
DECLARE VARIABLE NP_ID INTEGER;
DECLARE VARIABLE NAR_ID INTEGER;
DECLARE VARIABLE PAY_DATE DATE;
begin
for SELECT nar_pos.np_id
 FROM NARYADS, PAYMENTS, contracts, nar_pos, clients
 where
   (NARYADS.CTR_ID = CONTRACTS.CTRID) and
   (NARYADS.NAR_ID = PAYMENTS.NAR_ID) and
   (NARYADS.CTR_CLID = CLIENTS.CLID)  and
   (NARYADS.NAR_ID = NAR_POS.NAR_ID)  and
   ((NARYADS.CTR_CLID = 770) or
    (NARYADS.CTR_CLID = 403) or
    (NARYADS.CTR_CLID = 953)) and
   (PAYMENTS.PAY_DATE >= "01.05.2004") and
     (CONTRACTS.CTRCOMIS = 0)
  into :NP_ID
do
  begin
    UPDATE  nar_pos  SET np_price = np_price*1.1
    where (nar_pos.np_id = :NP_ID);
  end

for SELECT naryads.nar_id, payments.pay_date
 FROM NARYADS, PAYMENTS, contracts, clients
 where
   (NARYADS.CTR_ID = CONTRACTS.CTRID) and
   (NARYADS.NAR_ID = PAYMENTS.NAR_ID) and
   (NARYADS.CTR_CLID = CLIENTS.CLID)  and
   ((NARYADS.CTR_CLID = 770) or
    (NARYADS.CTR_CLID = 403) or
    (NARYADS.CTR_CLID = 953)) and
   (PAYMENTS.PAY_DATE >= "01.05.2004") and
    (CONTRACTS.CTRCOMIS = 0)
  into :NAR_ID, :PAY_DATE
do
  begin
    UPDATE  payments  SET  payments.pay_blocking = 0;
проблемный вызов:)
    execute procedure pau_sum_new(:NAR_ID,:PAY_DATE,1,null,1,0,null);
  end
end

Эсперт по синтаксису вроде бы пропускает но изменения откатывает


 
Alexandr   (2004-05-31 14:22) [4]

ну сказали же тебе, неправильно ты вызываешь pau_sum_new
ибо возвращаемые параметры должны быть.
А ты опятьб тоже самое пишешь.
Возьми в инспекторе свою процедуру и кинь в редактор - оно правильный синтаксис вызова составит и покажет.
Парсер IBExpert"а не полностью анализирует синтаксис, вот и проходит.
А Yaffil уже рубит.


 
Кщд ©   (2004-05-31 14:24) [5]

Внимательно смотрим Johnmen ©   (31.05.04 13:52) [1], пункт 2


 
TohaNik ©   (2004-05-31 15:11) [6]

Нда, пересмотрел всю базу - нигде (до этого)  не вызывал из ХП- ХП с выходными параметрами поэтому упорствовал.
Благодарю за ответы.

З.Ы.> оно правильный синтаксис вызова составит и покажет.
Показывает список только из входных параметров.??


 
Alexandr   (2004-05-31 15:15) [7]

З.Ы.> оно правильный синтаксис вызова составит и покажет.
Показывает список только из входных параметров.??

Б@я... Ну подумай же ты сам. Ради бога.


 
TohaNik ©   (2004-05-31 18:12) [8]

<Б@я... Ну подумай же ты сам. Ради бога.

Не ну я надеюсь что не все так плохо - :)
после
Кщд ©  (31.05.04 14:24) [5]

Внимательно смотрим Johnmen ©   (31.05.04 13:52) [1], пункт 2

я прочитал доку - увидел волшебную строчку
Syntax EXECUTE PROCEDURE name [: param [, : param …]]
[RETURNING_VALUES : param [, : param …]];

и создал новую ХП- кстати работающую:),
но старая не удаляется и не корректирется,
зациклилась на этой ошибке.
Что с ней делать? :)))


 
Johnmen ©   (2004-05-31 18:19) [9]

>Что с ней делать? :)))

С ошибкой ?
:)


 
TohaNik ©   (2004-05-31 18:35) [10]

Не с ошибкой все понятно, а если т. сказать глобально то с
базой - backup не проходит(та же ошибка).

Вообще сегодня выходной(базу не пользуют:) ) так что я восстановился из копии-создал правильную процедуру и можна ити
пиво пить.

Но в базе, там где осталась неправильная процедура, она то бишь
процедура не поддается ни компиляции ни удалению ни корректировке.
Вот исключительно в познавательных целях хотелось узнать, как-то
от ошибки ,а лучше от процедуры избавиться можно, без жестокого насилия над базой:)


 
Johnmen ©   (2004-05-31 18:51) [11]

Можно попробовать удалить ея из системной таблицы...


 
TohaNik ©   (2004-05-31 18:55) [12]

Не хочет из системной - засела крепко:))
Ну да ладно оставлю базу на потом - для экспериментов.
Еще раз спасибо.



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

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

Наверх





Память: 0.48 MB
Время: 0.034 c
6-1083687195
Popov Denis
2004-05-04 20:13
2004.06.27
Как "поймать" широковещательный udp пакет?


1-1087181005
Илья
2004-06-14 06:43
2004.06.27
программирование для КПК


3-1086260051
Jaxtor
2004-06-03 14:54
2004.06.27
Типы полей набора данных из хранимой процедуры


1-1087255495
Алекс А
2004-06-15 03:24
2004.06.27
Существуют ли простые библиотеки для проверки русской орфографии?


1-1086767413
Tom
2004-06-09 11:50
2004.06.27
as TDBGrid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский