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

Вниз

Как передать в InterBase параметры   Найти похожие ветки 

 
VaZ   (2003-02-05 07:42) [0]

День добрый...нужно передать из одной ХП параметры в другую не используя программу..Это возможно??? То есть из программыы передаются данные в ХП а из нее вызывается другая и я хочу в ней для условий использовать теже значения что передаю в первую.
CREATE PROCEDURE REVISION_STEP_C (
REVISION_DATE DATE,
ID_DEP INTEGER,
MYDATA VARCHAR(10))
AS
begin
UPDATE income
SET REV_REST_C=0
WHERE (REV_REST_C<>0) and (CR_DATE=:REVISION_DATE) and (ID_DEP=:ID_DEP);

UPDATE CONSTS
SET VALUE_B = :MYDATA
WHERE LABEL="SV_LAST_REV_DATE";

EXECUTE PROCEDURE RECALC_TOW_REST;

end

и вот моя модификация второго
CREATE PROCEDURE RECALC_TOW_REST2 (
REVISION_DATE DATE,
ID_DEP INTEGER)
AS
begin

UPDATE INCOME
SET TOW_REST = CONFIRMED_REST - REV_REST_C + INITIAL_INCOME + EXTRA_INCOME + MOVED_IN - MOVED_OUT - RETURNED - RET_TO_PO
WHERE (ID_DEP=:ID_DEP) AND (CR_DATE=:REVISION_DATE) ;
end


 
VaZ   (2003-02-05 07:53) [1]

поправка к первому
EXECUTE PROCEDURE RECALC_TOW_REST2


 
Наталия   (2003-02-05 08:08) [2]

А что, параметры разве нельзя указать?
EXECUTE PROCEDURE RECALC_TOW_REST2(:REVISION_DATE,:ID_DEP);




 
VaZ   (2003-02-05 08:26) [3]

Наталия
Вот что выдало после поправки...хотя я подобное уже пробовал...мож чего то не догоняю...


This operation is not defined for system tables.
unsuccessful metadata update.
ERASE RDB$PROCEDURE_PARAMETERS failed.
invalid request BLR at offset 215.
parameter mismatch for procedure RECALC_TOW_REST.


То есть он ссылается на прежнюю ХП...и новую ввести не удается


 
Виталий Панасенко   (2003-02-05 08:31) [4]

Дык, удали старую и создай новую...




 
VaZ   (2003-02-05 08:53) [5]

Виталий как мен удалить старую если она нужна в другом случае?
я просто хотел заменить в данной процедуре ссылку на новую...которую я создал и передать параметры... Удаление старой невозможно...


 
Наталия   (2003-02-05 09:23) [6]

А ALTER PROCEDURE не пробовал использовать?


 
VaZ   (2003-02-05 09:27) [7]

Как это??? поподробнее плиз...тут блин приходится до всего своим умом доходить...не успеваю..гы


 
VaZ   (2003-02-05 09:30) [8]

и что это даст?


 
Delirium^.Tremens   (2003-02-05 09:33) [9]

1. Отключаемся от базы
2. Вновь подключаемся
3. Переопределяем REVISION_STEP_C :

ALTER PROCEDURE REVISION_STEP_C (
REVISION_DATE DATE,
ID_DEP INTEGER,
MYDATA VARCHAR(10))
AS
begin
UPDATE income
SET REV_REST_C=0
WHERE (REV_REST_C<>0) and (CR_DATE=:REVISION_DATE) and (ID_DEP=:ID_DEP);

UPDATE CONSTS
SET VALUE_B = :MYDATA
WHERE LABEL="SV_LAST_REV_DATE";

/* EXECUTE PROCEDURE RECALC_TOW_REST; */

end

4. Добавляем параметры в RECALC_TOW_REST
5. Вновь переопределяем REVISION_STEP_C :

ALTER PROCEDURE REVISION_STEP_C (
REVISION_DATE DATE,
ID_DEP INTEGER,
MYDATA VARCHAR(10))
AS
begin
UPDATE income
SET REV_REST_C=0
WHERE (REV_REST_C<>0) and (CR_DATE=:REVISION_DATE) and (ID_DEP=:ID_DEP);

UPDATE CONSTS
SET VALUE_B = :MYDATA
WHERE LABEL="SV_LAST_REV_DATE";

EXECUTE PROCEDURE RECALC_TOW_REST(...Параметры...);
end



 
VaZ   (2003-02-05 09:43) [10]

2 Delirium^.Tremensтак уже ближе..отключаюсь подключаюсь...потом меняю greate на alter закрываю и пишет ту же ошибку что и выше... или опять не то чтото?
как alter более правильно юзать?


 
Delirium^.Tremens   (2003-02-05 09:46) [11]

Вернуться к п.1, п.2
В пункте 3 закомментировать в первой процедуре вызов второй и откомпилировать первую.
Продолжить с п.4


 
VaZ   (2003-02-05 09:52) [12]

так при компиляции то ошибка и вылазит описанная выше


 
Delirium^.Tremens   (2003-02-05 09:53) [13]

Вернуться к п.1 и, если не помогает, перезапустить IB server


 
Nerpa   (2003-02-05 10:51) [14]

Нельзя сделать ALTER (с изменением описания) для объекта, который используется другим кодом. Пройдись по ссылкам (кто кого использует), удали (отключи) всех, кто использует твою процедуру, а затем спокойно её меняй (ALTER или DROP... CREATE).
После этого не забудь восстановить тех кого удалила (отключила).
Когда много ХП, триггеров и связей между ними я предпочитаю вообще грохнуть все ХП и триггеры и заново всё создать. Для этого у меня есть скрипт всех объектов базы. При этом данные остаются целыми, а коды ХП и триггеров пересоздаются. Не надо напрягать мозги, какая ... мою ХП ещё использует.


 
VaZ   (2003-02-05 11:05) [15]

Вот это круто... у меня вызов ХП RECALC_TOW_REST идет из двух мест..то есть я дропаю обе ХП
потом я создал общую ХП
CREATE PROCEDURE REVISION_STEP_C2 (
REVISION_DATE DATE,
ID_DEP INTEGER,
MYDATA VARCHAR(10))
AS
begin
UPDATE income
SET REV_REST_C=0
WHERE (REV_REST_C<>0) and (CR_DATE=:REVISION_DATE) AND (ID_DEP=:ID_DEP);

UPDATE CONSTS
SET VALUE_B = :MYDATA
WHERE LABEL="SV_LAST_REV_DATE";

UPDATE INCOME
SET TOW_REST = CONFIRMED_REST - REV_REST_C + INITIAL_INCOME + EXTRA_INCOME + MOVED_IN - MOVED_OUT - RETURNED - RET_TO_PO
WHERE (ID_DEP=:ID_DEP) AND (CR_DATE=:REVISION_DATE) ;
end


и воссоздаю ту ХП что ссылалась на RECALC_TOW_REST??????



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

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

Наверх





Память: 0.48 MB
Время: 0.008 c
7-63870
Oskolok
2002-12-22 04:49
2003.02.20
Как изменить программно фоновый рисунок Рабочего Стола


1-63674
Zirus
2003-02-12 06:04
2003.02.20
копирование формы


1-63628
Dark Elf
2003-02-11 16:50
2003.02.20
Расширенный алгоритм Эвклида


3-63513
ERDEN
2003-02-03 09:36
2003.02.20
отчет в QReport


4-63897
pkm1
2003-01-09 18:55
2003.02.20
Как закрыть форму?





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