powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / DW - Store Procedure Update
16 сообщений из 16, страница 1 из 1
DW - Store Procedure Update
    #32775671
DIGITALPRO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем зздрасте!

Имеется DW grid построенная на вьюхе
Имеется ХП:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
ALTER PROCEDURE "DBA"."P_SP_DEL"(
IN @id_name varchar( 128 ),
IN @id_row Numeric( 30 ),
IN @Table_name varchar( 128 )
)

BEGIN
    EXECUTE IMMEDIATE 
    'DELETE '|| @Table_name ||' Where '|| @id_name ||'='|| @id_row;
    COMMIT;
END
которую я вешаю в Store Procedure Update, на закладку DELETE

Произвожу удаление записи в DW следующим образом
Код: plaintext
1.
2.
3.
4.
5.
if l_dw.deleterow( 0 )<> 1  then 
   MessageBox('ÎØÈÁÊÀ','Íåâîçìîæíî óäàëèòü çàïèñü', StopSign!);
   ROLLBACK;
   RETURN;
end if
DW_1.Update()

При удалении записи дает сообщение
DataWindow Error
.... Update
....
Но при этом запись удаляется!!!

Как избавится от этого окна?
...
Рейтинг: 0 / 0
DW - Store Procedure Update
    #32775727
Сотников
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Удаление происходит не сразу, а как раз после Update.
То есть:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
if DW_1.deleterow( 0 )<> 1  then 
   MessageBox('Строку не удалить', StopSign!);
   RETURN;
end if

if DW_1.Update() <>  1  then
  COMMIT;
  MessageBox('Удаление OK', ok!);
else
  ROLLBACK;
  MessageBox('Удаление False', ok!);
end if
...
Рейтинг: 0 / 0
DW - Store Procedure Update
    #32775728
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гм...
автор 'DELETE from '|| @Table_name ||' Where '|| @id_name ||'='|| @id_row;

Какую именно ошибку возвращает БД? Заодно, было бы классно, если бы вы, задавая вопрос указали бы сервер, способ соединения, версию PB...
...
Рейтинг: 0 / 0
DW - Store Procedure Update
    #32775735
Сотников
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ошибся только в возвращаемом значении

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
if DW_1.deleterow( 0 )<> 1  then 
   MessageBox('Строку не удалить', StopSign!);
   RETURN;
end if

if DW_1.Update() =  1  then
  COMMIT;
  MessageBox('Удаление OK', ok!);
else
  ROLLBACK;
  MessageBox('Удаление False', ok!);
end if
...
Рейтинг: 0 / 0
DW - Store Procedure Update
    #32775745
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СотниковОшибся только в возвращаемом значении

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
if DW_1.deleterow( 0 )<> 1  then 
   MessageBox('Строку не удалить', StopSign!);
   RETURN;
end if

if DW_1.Update() =  1  then
  COMMIT;
  MessageBox('Удаление OK', ok!);
else
  ROLLBACK;
  MessageBox('Удаление False', ok!);
end if
Не только - MessageBox ожидает два строковых аргумента :-))
...
Рейтинг: 0 / 0
DW - Store Procedure Update
    #32775752
DIGITALPRO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сотников
К сожалению не помогло!


Ошибка выходит следующая:
DataWinwow Error
Код: plaintext
1.
2.
Row changed between retrive and update
No changes made to database.
execute dba.p_sp_del

===============================
PB 9.0.1 (7236) ASA 9.0.0 (1312)
...
Рейтинг: 0 / 0
DW - Store Procedure Update
    #32775762
DIGITALPRO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и еще ...
Если вызывать процедуру из
Код: plaintext
Interactive SQL
то все отлично работает!

===============================
PB 9.0.1 (7236) ASA 9.0.0 (1312)
...
Рейтинг: 0 / 0
DW - Store Procedure Update
    #32775764
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СотниковОшибся только в возвращаемом значении

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
if DW_1.deleterow( 0 )<> 1  then 
   MessageBox('Строку не удалить', StopSign!);
   RETURN;
end if

if DW_1.Update() =  1  then
  COMMIT;
  MessageBox('Удаление OK', ok!);
else
  ROLLBACK;
  MessageBox('Удаление False', ok!);
end if
Удаления бывают разные! :-)
Если deleterow выполнилась успешно, то в клиентском приложении строка будет удалена - исчезнет с экрана. Однако, удаление из БД, которое инициирует функция update, может быть неудачным, в этом случае удаленная запись не появится до следующего retrieve.
...
Рейтинг: 0 / 0
DW - Store Procedure Update
    #32775781
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DIGITALPROДа и еще ...
Если вызывать процедуру из
Код: plaintext
Interactive SQL
то все отлично работает!

===============================
PB 9.0.1 (7236) ASA 9.0.0 (1312)Как установлены правила формирования where clause?
...
Рейтинг: 0 / 0
DW - Store Procedure Update
    #32775786
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, в процедуру передаются original значения или измененные?
...
Рейтинг: 0 / 0
DW - Store Procedure Update
    #32775836
DIGITALPRO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PL99
Код: plaintext
Как установлены правила формирования where clause?
Allow Updates галочка вообще не стоит
Это DW построено из view которое состоит из нескольких таблиц.

Код: plaintext
Да, в процедуру передаются original значения или измененные?
Немнорго не понимимаю про что ресь, но параметры передаются!

===============================
PB 9.0.1 (7236) ASA 9.0.0 (1312)
...
Рейтинг: 0 / 0
DW - Store Procedure Update
    #32775879
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DIGITALPRO PL99
Код: plaintext
Как установлены правила формирования where clause?
Allow Updates галочка вообще не стоит
Это DW построено из view которое состоит из нескольких таблиц.

Код: plaintext
Да, в процедуру передаются original значения или измененные?
Немнорго не понимимаю про что ресь, но параметры передаются!

===============================
PB 9.0.1 (7236) ASA 9.0.0 (1312) Начните отсюда.

из недавно написанного :-))update.method.type=SP update.method="OSK.PAYMENTS_PKG.OF_UPDATE" update.method.arguments=(("A_PMNTS_ID_PAYMENTS",column=("id_payments", orig ,in)),("A_PMNTS_ID_PAYMENT_TYPES",column=("id_payment_types", new ,in)),... Обратите внимание, что первичный ключ передается как original, при этом update where clause установлен в "Key columns".
...
Рейтинг: 0 / 0
DW - Store Procedure Update
    #32776547
DIGITALPRO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничего из выше перечисленного не помогло ((, но .....

Поставил EBF на ASA 9.0.0 с 1108 на 1312, открыл базу в Central, закрыл....
Открыл свой проект, запустил и все никаких сообщений больше нет!!!
При этом ни какие галочки в DW ни где не ставил! Это меня настораживает.

Почему так произошло, я вообще не понимаю, как ASA связанна с PB (DW)

Может кто знает ответ на этот вопрос?
...
Рейтинг: 0 / 0
DW - Store Procedure Update
    #32777803
DIGITALPRO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UP
===============================
PB 9.0.1 (7236) ASA 9.0.0 (1312)
...
Рейтинг: 0 / 0
DW - Store Procedure Update
    #32777902
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PB определяет успешно ли обновление по sqlnrows (ну не буквально по SQLCA.sqlnrows, а по смыслу)

т.е. если при выполнении UPDATE <table> SET ... WHERE ...
количество обновленных строк - ноль, то это ошибка "Row changed between retrieve and update"
если 1 - все нормально.

в SP на MSSQL приходилось видеть в конце сложной процедуры примерно такой код:

Код: plaintext
1.
2.
3.
4.
if @rowcount =  0 
    select  1  where  1 = 0       --- simulate (@@rowcount=0) 
else
    select  1  where  1 = 1       --- simulate (@@rowcount=1)
return @error
HTH
...
Рейтинг: 0 / 0
DW - Store Procedure Update
    #32777968
DIGITALPRO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!

===============================
PB 9.0.1 (7236) ASA 9.0.0 (1312)
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / DW - Store Procedure Update
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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