|
|
|
Перестала работать PROCEDURE
|
|||
|---|---|---|---|
|
#18+
Приложение на ПБ 9.0.3 и есть сервер ASF 9.0.2 История: Проект достался мне по наследству. Для ускорения формирования отчета решил заменить обработку при открытии окна в приложении на процедуру. Схематично было так: INSERT INTO tabl1(...) SELECT ... ; (с подзапросами, tabl1-постояная таблица ) delete tabl1 ... ; update tabl1 ... ; В общем, ничего сложного. Вместо запросов написал процедуру sp_kolprihrash(...) и на событии open окна отчета w_user вызываю ее: DECLARE sp_kolu PROCEDURE FOR sp_kolprihrash @datbeg = :datbeg, @datend = :datend, @typ = :ss1 ; EXECUTE sp_kolu; if SQLCA.sqlcode = -1 then MessageBox("Stored Procedure Error 75457", SQLCA.sqlerrtext) end if CLOSE sp_kolu; (надо ли здесь закрывать ?) dw_1.SetTransObject(sqlca) dw_1.Retrieve() Пока разрабатывал и пару дней работало нормально, потом перестало (и на сервере и локально на ПК). Пока проверял "почему перестало работать" (Возвращает SQLCA.sqlcode=100), почему-то заработало (Возвращает также SQLCA.sqlcode=100), но на след.день опять перестало и больше не хочет. В процедуру вход выполняется, в начальной ее части что-то мелкое нормально отрабатывает, но запрос INSERT INTO tabl1(...) SELECT ... ; (с подзапросами) ничего не бросает в tabl1. Условия запроса (аргументы) (смотрел в отладчике ASA) передаются в процедуру. Сегодня на локальной базе опять написал этот запрос по частям (прибавляя поля в INSERT … SELECT … , при этом FROM и WHERE – не изменял) – все заработало. При этом на серверной базе ничего не менял и не заходил при этой правке. Но и там на вновь скрученном приложении все заработало. Получается глюк где-то в Билдере появляется. Все заработало , но надолго ли ? В чем причина, может кто подскажет ? Или я что-то не так делаю ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2008, 11:16 |
|
||
|
Перестала работать PROCEDURE
|
|||
|---|---|---|---|
|
#18+
ВасВас пишет: > DECLARE sp_kolu PROCEDURE FOR sp_kolprihrash @datbeg = :datbeg, @datend > = :datend, @typ = :ss1 ; > EXECUTE sp_kolu; А зачем так извращаться? Вызывай через RPC. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2008, 11:46 |
|
||
|
Перестала работать PROCEDURE
|
|||
|---|---|---|---|
|
#18+
Это как ? "Вызывай через RPC" Извините, но пока нет опыта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2008, 12:01 |
|
||
|
Перестала работать PROCEDURE
|
|||
|---|---|---|---|
|
#18+
ВасВасЭто как ? "Вызывай через RPC" Извините, но пока нет опыта. Это через Call ? А как с клиента вызвать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2008, 12:11 |
|
||
|
Перестала работать PROCEDURE
|
|||
|---|---|---|---|
|
#18+
Это как ? "Вызывай через RPC" Извините, но пока нет опыта. Нашел в справке Билдера: Это то, что надо ? Example 1 This declaration of the GIVE_RAISE_PROC stored procedure is declared in the User Object painter for a transaction object (the declaration appears on one line): FUNCTION double GIVE_RAISE(ref double SALARY) RPCFUNC ALIAS FOR "GIVE_RAISE_PROC" This code calls the function in a script: double val = 20000 double rv rv = SQLCA.give_raise(val) Example 2 This declaration for the stored procedure SPM8 does not need an ALIAS FOR phrase, because the PowerBuilder and DBMS names are the same: FUNCTION integer SPM8(integer value) RPCFUNC This code calls the SPM8 stored procedure: int myresult myresult = SQLCA.spm8(myresult) IF SQLCA.sqlcode <> 0 THEN messagebox("Error", SQLCA.sqlerrtext) END IF ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2008, 12:18 |
|
||
|
Перестала работать PROCEDURE
|
|||
|---|---|---|---|
|
#18+
А вот так работает : select sp_kolprihrash(:i_orderkey.datbeg, :i_orderkey.datend, :ss1) into :rc from dummy; результаты потом беру из итоговой таблицы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2008, 14:09 |
|
||
|
|

start [/forum/topic.php?fid=15&gotonew=1&tid=1336525]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
71ms |
get topic data: |
13ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 191ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...