powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / вызов ХП Oracle из VFP 8.0
6 сообщений из 6, страница 1 из 1
вызов ХП Oracle из VFP 8.0
    #33493199
sega_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, такая проблема.
При commit-е транзакции вылетает:

"Ошибка выполнения SQL-запроса:

{ call my_proc('my_param') }

SQL State: S1000
#2074 [Oracle][ODBC][Ora]ORA-02074: cannot ROLLBACK in a distributed transaction
ORA-02074: cannot SET SAVEPOINT in a distributed transaction"

Использую Oracle ODBC driver.
Версия Oracle 8.1.7.4.
...
Рейтинг: 0 / 0
вызов ХП Oracle из VFP 8.0
    #33493489
Фотография FM32YO aka KID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sega_aЗдравствуйте, такая проблема.
При commit-е транзакции вылетает:

"Ошибка выполнения SQL-запроса:

{ call my_proc('my_param') }

SQL State: S1000
#2074 [Oracle][ODBC][Ora]ORA-02074: cannot ROLLBACK in a distributed transaction
ORA-02074: cannot SET SAVEPOINT in a distributed transaction"

Использую Oracle ODBC driver.
Версия Oracle 8.1.7.4.

Я работаю с тем же ораклом... но твоя ошибка скорей всего в самой my_proc....
хотя не понятно как это При commit-е транзакции Коммит-то стоит внутри ХП-шки?
Лучше уж код процедуры сюда.. а там видно будет
...
Рейтинг: 0 / 0
вызов ХП Oracle из VFP 8.0
    #33493588
sega_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PROCEDURE my_proc (my_param varchar2)
as
begin
savepoint a;
insert into my_table values (my_param);
commit;
EXCEPTION
WHEN OTHERS THEN
rollback to a;
RAISE;

end my_proc;
...
Рейтинг: 0 / 0
вызов ХП Oracle из VFP 8.0
    #33494042
Фотография FM32YO aka KID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
PROCEDURE my_proc (my_param varchar2)
as
begin
         savepoint a;
	 insert into my_table values (my_param);						   
	 commit;	   
	 EXCEPTION	 
     		  WHEN OTHERS THEN
	            rollback to a;			  
       RAISE;	  	 
	 
end my_proc;


не знаю как другие - я сперва проверяю как работает эты процедура в самом оракле.. если там она работает, то должна работать и из-под ВФП.....

это
EXCEPTION
WHEN OTHERS THEN
правильно написано? я просто не уверен.. и
вызов ХП ты описал:

{ call my_proc('my_param') }

вроде бу надо:{ call my_proc( ? my_param) }
это во-первых.. а во вторых - прочел твой вопрос и не понял, а как ты догадался, что это у тебя именно при коммите???

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Sur = ALLTRIM(UPPER(Thisform.Surn1.Value)) 

cSP = "{call MyShema.MySP(?Sur)}"  

k = SQLExec(gnConnHandle, cSP)

IF K <>  1 
AERROR(laError) 
	= MESSAGEBOX('ХП не выполнилась ' + cSP + CHR( 13 ) + ;
	laError( 2 ),  48 , 'Сообщение об ошибке номер ' + STR(laError( 1 )) )	
ENDIF

...
Рейтинг: 0 / 0
вызов ХП Oracle из VFP 8.0
    #33496348
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FM32YO aka KIDвроде бу надо:{ call my_proc( ? my_param) }
тут имеется в виду вызов процедуры с известным значением параметра.
так что без разницы писать так:
Код: plaintext
1.
my_string = "my_param"
SQLEXEC(hConn, "{ call my_proc(?my_string) }")
или так:
Код: plaintext
SQLEXEC(hConn, "{ call my_proc('my_param') }")
...
Рейтинг: 0 / 0
вызов ХП Oracle из VFP 8.0
    #33496422
sega_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, проблеме решена. Надо было в connectstring родного ораклового ODBC драйвера дописать MTS=T;

MTS= Microsoft Transaction Server
Support
T=Disabled.
F=Enabled.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / вызов ХП Oracle из VFP 8.0
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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