|
|
|
Поправить чужую ХП
|
|||
|---|---|---|---|
|
#18+
Такая вот ерунда получается. Есть у нас на сопровождении программа с базой на ИБ. В программе есть отчёт, который по причине кривых рук разработчика работает неправильно. Я выяснил, что отчёт формируется ХП. Если её поправить, то всё будет в порядке. Проблема в том, что в этой ХП в качестве выходного параметра упоминается переменная <RELEASE>, а это зарезервированное слово. Короче, когда я пытаюсь сделать alter или заново создать ХП, у ИБ у меня ругается на этот RELEASE, говорит "token unknown". Можно это как-нибудь исправить, оставив этот RELEASE? Пробовал заключать в кавычки - эффект тот же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 09:28 |
|
||
|
Поправить чужую ХП
|
|||
|---|---|---|---|
|
#18+
Текст процедуры....? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 09:50 |
|
||
|
Поправить чужую ХП
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 09:58 |
|
||
|
Поправить чужую ХП
|
|||
|---|---|---|---|
|
#18+
А пробовал заключать в кавычки и писать одинаково ? если объявлено "RELEASE", то и писать "RELEASE" а не "Release" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 10:25 |
|
||
|
Поправить чужую ХП
|
|||
|---|---|---|---|
|
#18+
да. ругается на строчку с объявлением параметра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 10:36 |
|
||
|
Поправить чужую ХП
|
|||
|---|---|---|---|
|
#18+
Удалить процедуру вручную, из rdb$procedure... не забыв про dependencies (само должно удалить), затем создать новую без этого параметра. PS Union - это все-таки жестоко ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 10:52 |
|
||
|
Поправить чужую ХП
|
|||
|---|---|---|---|
|
#18+
Процедуру необходимо создавать с теми же параметрами, ибо она используется программой и программа привязана к существующим параметрам. Доступа к исходникам программы нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 10:57 |
|
||
|
Поправить чужую ХП
|
|||
|---|---|---|---|
|
#18+
Без исходников трудно будет что-то придумать. Можно, конечно, сам экзешник попробовать исправить - открыть его фаром и заменить все RELEASE на на RELEAS_ и то же самое сделать в процедуре... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 11:20 |
|
||
|
Поправить чужую ХП
|
|||
|---|---|---|---|
|
#18+
все ненадо :-) там куча функций будет типа ReleaseDC надо вдумчиво и главное чтоб размер не менялся :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 11:24 |
|
||
|
Поправить чужую ХП
|
|||
|---|---|---|---|
|
#18+
Теоретически возможно, если обращение идет по имени к параметру, а если не по имени, то exe править ненадо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 11:27 |
|
||
|
Поправить чужую ХП
|
|||
|---|---|---|---|
|
#18+
> Теоретически возможно, если обращение идет по имени к параметру, а если не по имени, то exe править ненадо. Врядли. Знаю только одного чела, который по индексу обращается. Всё время имеет геморрой с этим и всё равно не отступает - думает, что так его прога быстрее будет работать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 11:30 |
|
||
|
Поправить чужую ХП
|
|||
|---|---|---|---|
|
#18+
а что? у меня есть некторое количество объектов, автоматически генерирующих запросы и их обрабатывающих, так там по имени смысла нет обращаться, объект сам знает ху из ху ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 11:32 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32292330&tid=1579828]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
157ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 427ms |

| 0 / 0 |
