powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Поправить чужую ХП
13 сообщений из 13, страница 1 из 1
Поправить чужую ХП
    #32292192
gray_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такая вот ерунда получается. Есть у нас на сопровождении программа с базой на ИБ. В программе есть отчёт, который по причине кривых рук разработчика работает неправильно. Я выяснил, что отчёт формируется ХП. Если её поправить, то всё будет в порядке. Проблема в том, что в этой ХП в качестве выходного параметра упоминается переменная <RELEASE>, а это зарезервированное слово. Короче, когда я пытаюсь сделать alter или заново создать ХП, у ИБ у меня ругается на этот RELEASE, говорит "token unknown". Можно это как-нибудь исправить, оставив этот RELEASE? Пробовал заключать в кавычки - эффект тот же.
...
Рейтинг: 0 / 0
Поправить чужую ХП
    #32292219
Timujin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Текст процедуры....?
...
Рейтинг: 0 / 0
Поправить чужую ХП
    #32292228
gray_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CREATE PROCEDURE GETSHIFTCARGOOWNERMOVEMENT (
IBEGIN_DATE DATE,
IEND_DATE DATE)
RETURNS (
STOCKNAME CHAR(50),
STOCKCODE CHAR(15),
CARGOOWNERNAME CHAR(60),
BEGINREST NUMERIC(15,3),
ARRIVAL NUMERIC(15,3),
RELEASE NUMERIC(15,3),
WRITING NUMERIC(15,3),
ENDREST NUMERIC(15,3))
AS
DECLARE VARIABLE VCARGOOWNER_ID INTEGER;
BEGIN
FOR
SELECT S.StockName, S.StockCode, C.ShortCustomerName, P.CargoOwner_ID
FROM StckPrty P, SPrtyQnt Q, Stocks S, Customer C
WHERE (P.StockParty_ID = Q.StockParty_ID) and
(P.Stock_ID = S.Stock_ID) and
(P.CargoOwner_ID = C.Customer_ID) and
(S.StockKind = 'BulkOil') and
(Q.Operation_DATE between :iBegin_DATE and :iEnd_DATE)
GROUP BY S.StockName, S.StockCode, C.ShortCustomerName, P.CargoOwner_ID
union
SELECT Ct.StockName, Ct.StockCode, D.CargoOwnerName, D.CargoOwner_ID
FROM STranWB D, STranWBC Ct
WHERE (Ct.STranWBill_ID = D.STranWBill_ID) and
(Ct.SelfOrg_CODE = D.SelfOrg_CODE) and
(D.Operation_DATE between :iBegin_DATE and :iEnd_DATE) and
(D.Fill_CODE > 0) and
(Ct.CapacityNumber is not null)
GROUP BY Ct.StockName, Ct.StockCode, D.CargoOwnerName, D.CargoOwner_ID
union
SELECT W.StockName, W.StockCode, C.ShortCustomerName, P.CargoOwner_ID
FROM StckPrty P, WrtActs W, Stocks S, Customer C
WHERE (W.StockParty_ID = P.StockParty_ID) and
(P.Stock_ID = S.Stock_ID) and
(P.CargoOwner_ID = C.Customer_ID) and
(W.Operation_DATE between :iBegin_DATE and :iEnd_DATE) and
(S.StockKind = 'BulkOil')
GROUP BY W.StockName, W.StockCode, C.ShortCustomerName, P.CargoOwner_ID
INTO :StockName, :StockCode, :CargoOwnerName, :vCargoOwner_ID
DO
begin
EXECUTE PROCEDURE GETOilAvail_DateStockCargoOwner (:iBegin_DATE,
:StockName, :StockCode, :vCargoOwner_ID)
RETURNING_VALUES :BeginRest;
SELECT sum(Q.Quantity)
FROM StckPrty P, SPrtyQnt Q, Stocks S
WHERE (P.StockParty_ID = Q.StockParty_ID) and
(P.Stock_ID = S.Stock_ID) and
(S.StockName = :StockName) and
(S.StockCode = :StockCode) and
(P.CargoOwner_ID = :vCargoOwner_ID) and
(Q.Operation_DATE between :iBegin_DATE and :iEnd_DATE)
INTO :Arrival;
SELECT sum(Ct.Quantity)
FROM STranWB D, STranWBC Ct
WHERE (Ct.STranWBill_ID = D.STranWBill_ID) and
(Ct.SelfOrg_CODE = D.SelfOrg_CODE) and
(D.Operation_DATE between :iBegin_DATE and :iEnd_DATE) and
(D.Fill_CODE > 0) and
(Ct.StockName = :StockName) and
(Ct.StockCode = :StockCode) and
(D.CargoOwner_ID = :vCargoOwner_ID)
INTO :Release;
SELECT sum(W.Quantity)
FROM WrtActs W, StckPrty P
WHERE (W.StockParty_ID = P.StockParty_ID) and
(W.Operation_DATE between :iBegin_DATE and :iEnd_DATE) and
(W.StockName = :StockName) and
(W.StockCode = :StockCode) and
(P.CargoOwner_ID = :vCargoOwner_ID)
INTO :Writing;
EndRest = BeginRest;
IF (:Arrival IS NOT NULL) THEN
EndRest = EndRest + Arrival;
IF (:Release IS NOT NULL) THEN
EndRest = EndRest - Release;
IF (:Writing IS NOT NULL) THEN
EndRest = EndRest - Writing;
SUSPEND;
end
END
...
Рейтинг: 0 / 0
Поправить чужую ХП
    #32292279
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А пробовал заключать в кавычки и писать одинаково ? если объявлено "RELEASE", то и писать "RELEASE" а не "Release"
...
Рейтинг: 0 / 0
Поправить чужую ХП
    #32292294
gray_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да.
ругается на строчку с объявлением параметра.
...
Рейтинг: 0 / 0
Поправить чужую ХП
    #32292330
Roman Ignatiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Удалить процедуру вручную, из rdb$procedure... не забыв про dependencies (само должно удалить), затем создать новую без этого параметра.
PS Union - это все-таки жестоко
...
Рейтинг: 0 / 0
Поправить чужую ХП
    #32292340
gray_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Процедуру необходимо создавать с теми же параметрами, ибо она используется программой и программа привязана к существующим параметрам. Доступа к исходникам программы нет.
...
Рейтинг: 0 / 0
Поправить чужую ХП
    #32292393
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без исходников трудно будет что-то придумать. Можно, конечно, сам экзешник попробовать исправить - открыть его фаром и заменить все RELEASE на на RELEAS_ и то же самое сделать в процедуре...
...
Рейтинг: 0 / 0
Поправить чужую ХП
    #32292398
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все ненадо :-)
там куча функций будет типа ReleaseDC
надо вдумчиво и главное чтоб размер не менялся :-)
...
Рейтинг: 0 / 0
Поправить чужую ХП
    #32292403
Sclif81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Теоретически возможно, если обращение идет по имени к параметру, а если не по имени, то exe править ненадо.
...
Рейтинг: 0 / 0
Поправить чужую ХП
    #32292409
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Теоретически возможно, если обращение идет по имени к параметру, а если не по имени, то exe править ненадо.

Врядли. Знаю только одного чела, который по индексу обращается. Всё время имеет геморрой с этим и всё равно не отступает - думает, что так его прога быстрее будет работать
...
Рейтинг: 0 / 0
Поправить чужую ХП
    #32292415
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что?
у меня есть некторое количество объектов, автоматически генерирующих запросы и их обрабатывающих, так там по имени смысла нет обращаться, объект сам знает ху из ху
...
Рейтинг: 0 / 0
Поправить чужую ХП
    #32292422
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так где нет смысла - там и не надо, но везде пихать - это тоже изврат.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Поправить чужую ХП
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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