powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / вызов хранимой процедуры оракл из фокспро
21 сообщений из 21, страница 1 из 1
вызов хранимой процедуры оракл из фокспро
    #34757403
RustamK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
люди помогите, пожалуйста!
мне нужно вызвать несколько процедур друг за другом.
когда вызываю процедуры из sql-plus из файла с расширением sql все ок.
Вот текст

SET SERVEROUTPUT ON
ALTER SESSION SET NLS_DATE_FORMAT='dd.mm.yyyy';
BEGIN PKG_PROC_BROKER.PROLOGUE; END;
/
BEGIN PKG_PROC_BROKER.SET_PARAM_NUM('NCOMPANY', 118960); END;
/
BEGIN PKG_PROC_BROKER.SET_PARAM_NUM('NCRN', 118993); END;
/
BEGIN PKG_PROC_BROKER.SET_PARAM_STR('SPREF', '1'); END;
/
BEGIN PKG_PROC_BROKER.SET_PARAM_STR('SNUMB', '2'); END;
/
BEGIN PKG_PROC_BROKER.SET_PARAM_STR('SCLNPSPFMTYPES', 'приказ'); END;
/
BEGIN PKG_PROC_BROKER.SET_PARAM_STR('SPERSCODE', 'Ануфриев С.П.#1#000006#АСПО'); END;
/
BEGIN PKG_PROC_BROKER.SET_PARAM_DAT('DBEGENG','10.07.2007' ); END;
/
BEGIN PKG_PROC_BROKER.SET_PARAM_NUM('NINSERT_MODE', 1); END;
/
BEGIN PKG_PROC_BROKER.EXECUTE('P_CLNPSPFM_INSERT',1);END;
/
BEGIN PKG_PROC_BROKER.EPILOGUE; END;
/
commit
/



а вот при вызове из Фокспро результата нет

=SQLEXEC(gnConnHandle,"ALTER SESSION SET NLS_DATE_FORMAT='dd.mm.yyyy';")
=SQLEXEC(gnConnHandle,"{call PKG_PROC_BROKER.PROLOGUE; }")
=SQLEXEC(gnConnHandle,"{call PKG_PROC_BROKER.SET_PARAM_NUM('NCOMPANY',118960); }")
=SQLEXEC(gnConnHandle,"{call PKG_PROC_BROKER.SET_PARAM_NUM('NCRN',118993);}")
=SQLEXEC(gnConnHandle,"{call PKG_PROC_BROKER.SET_PARAM_STR('SPREF','1');}")
=SQLEXEC(gnConnHandle,"{call PKG_PROC_BROKER.SET_PARAM_STR('SNUMB','2');}")
=SQLEXEC(gnConnHandle,"{call PKG_PROC_BROKER.SET_PARAM_STR('SCLNPSPFMTYPES','приказ');}")
=SQLEXEC(gnConnHandle,"{call PKG_PROC_BROKER.SET_PARAM_STR('SPERSCODE','Ануфриев С.П.#1#000006#АСПО');}")
=SQLEXEC(gnConnHandle,"{call PKG_PROC_BROKER.SET_PARAM_DAT('DBEGENG','10.07.2007' );}")
=SQLEXEC(gnConnHandle,"{call PKG_PROC_BROKER.SET_PARAM_NUM('NINSERT_MODE',1);}")
=SQLEXEC(gnConnHandle,"{call PKG_PROC_BROKER.EXECUTE('P_CLNPSPFM_INSERT',1);}")
=SQLEXEC(gnConnHandle,"{call PKG_PROC_BROKER.EPILOGUE;}")
=SQLCOMMIT(gnConnHandle)


может, кто подскажет в чем проблема.буду презнателен
если вызывать одну процедуру результата не увидеть.
...
Рейтинг: 0 / 0
вызов хранимой процедуры оракл из фокспро
    #34757472
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
IF SQLExec(...)< 0 
	LOCAL laError( 1 )
	=AERROR(laError)
	* Анализ содержимого массива laError для уточнения причины ошибки
ENDIF
...
Рейтинг: 0 / 0
вызов хранимой процедуры оракл из фокспро
    #34757553
RustamK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВОЗНИКАЕТ ВОТ ТАКАЯ ОШИБКА

Код: plaintext
1.
SQL statement parameter is required for non-prepared 
SQLEXEC() calls
...
Рейтинг: 0 / 0
вызов хранимой процедуры оракл из фокспро
    #34757595
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На какой команде-то?
...
Рейтинг: 0 / 0
вызов хранимой процедуры оракл из фокспро
    #34757610
RustamK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот на этой

IF SQLExec(gnConnHandle)<0

но если сделать так ошибки нет

IF gnConnHandle<0
...
Рейтинг: 0 / 0
вызов хранимой процедуры оракл из фокспро
    #34757840
авторвот на этой

IF SQLExec(gnConnHandle)<0
И почему Вы решили, что здесь надо опустить второй параметр?
Вам указали, что надо проверять результат выполнения SQLexec(). Для этого его надо не в пустоту выбрасывать, а анализировать. Пример:

Код: plaintext
if SQLEXEC(gnConnHandle,"ALTER SESSION SET NLS_DATE_FORMAT='dd.mm.yyyy';")< 0 

авторно если сделать так ошибки нет

IF gnConnHandle<0
Естественно. А что с хэндлом, то есть числом, могло случиться?
...
Рейтинг: 0 / 0
вызов хранимой процедуры оракл из фокспро
    #34758196
RustamK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне ошибку выдает №1526
видимо необходимо выбрать другой ODBC драйвер

может ктонибуть скажет каким лучше пользоваться?
я использую Microsoft ODBC for Oracle
...
Рейтинг: 0 / 0
вызов хранимой процедуры оракл из фокспро
    #34758284
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй все сразу серверу заслать:
Код: plaintext
1.
2.
lcSql = FileToStr("MyQuery.sql")
SQLEXEC(gnConnHandle,lcSql)
...
Рейтинг: 0 / 0
вызов хранимой процедуры оракл из фокспро
    #34758288
Мне ошибку выдает №1526
видимо необходимо выбрать другой ODBC драйвер
И каким образом проведена логическая зависимость драйвера от ошибки?
Ошибка 1526 - хорошая ошибка, говорящая об неполадках вне фокса.
Ну и где содержимое анализируемого массива, полученного от Aerror()? Мы его должны отгадать?
...
Рейтинг: 0 / 0
вызов хранимой процедуры оракл из фокспро
    #34758299
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RustamKМне ошибку выдает №1526
видимо необходимо выбрать другой ODBC драйвер

может ктонибуть скажет каким лучше пользоваться?
я использую Microsoft ODBC for Oracle Ошибка почти всегда 1526, что конкретно сервер возвращает (текст ошибки) смотри
Код: plaintext
1.
aerror(laErr)
MessageBox(Ошибка № ' + str(laErr[1,1]) + ' ' + laErr[ 1 , 2 ])
...
Рейтинг: 0 / 0
вызов хранимой процедуры оракл из фокспро
    #34758323
RustamK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот текст ошибки

Код: plaintext
1.
2.
3.
4.
5.
6.
1 1526
2  Connectivity error:[Oracle][ODBC] Syntax error or access violetion.
3  [Oracle][ODBC] Syntax error or access violetion.
4  37000
5 0
6 1
7 NULL
...
Рейтинг: 0 / 0
вызов хранимой процедуры оракл из фокспро
    #34758361
[Oracle][ODBC] Syntax error or access violetion.
Черным по-английски написано про ошибочный синтаксис или отсутствие прав. Соответственно, надо разбираться или с одним, или с другим. Вот и ищите косяк . Кстати, на какой из SQLEXEC() ругается-то?
...
Рейтинг: 0 / 0
вызов хранимой процедуры оракл из фокспро
    #34758385
RustamK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
на все

Это значит, что мне Oracle не позволяет выполнять процедуры?
...
Рейтинг: 0 / 0
вызов хранимой процедуры оракл из фокспро
    #34758445
Или не позволяет, или они неправильно вызываются. Вот два этих варианта надо проверить.
...
Рейтинг: 0 / 0
вызов хранимой процедуры оракл из фокспро
    #34758530
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RustamKна все

Это значит, что мне Oracle не позволяет выполнять процедуры?

Да елки...
Если в проге много строк и непонятно, в какой ошибка, ее стараются локализовать. Например, закомментарить все SQLEXEC кроме первого и т.д.
...
Рейтинг: 0 / 0
вызов хранимой процедуры оракл из фокспро
    #34760101
Ilhom1976
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Убери ; после каждой комманды при передаче ораклу...
вместо
=SQLEXEC(gnConnHandle,"ALTER SESSION SET NLS_DATE_FORMAT='dd.mm.yyyy';")
сделай
=SQLEXEC(gnConnHandle,"ALTER SESSION SET NLS_DATE_FORMAT='dd.mm.yyyy'")
...
Рейтинг: 0 / 0
вызов хранимой процедуры оракл из фокспро
    #34760155
mitjay64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RustamKможет ктонибуть скажет каким лучше пользоваться?
я использую Microsoft ODBC for Oracle
Лучше пользовать ODBC драйвер от Oracle.

Если из SQLPlus все путем, прав хватает, ошибок нет, то:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
TEXT TO SqlString TEXTMERGE NOSHOW PRETEXT  15 
SET SERVEROUTPUT ON
ALTER SESSION SET NLS_DATE_FORMAT='dd.mm.yyyy';
BEGIN PKG_PROC_BROKER.PROLOGUE; END;
/
BEGIN PKG_PROC_BROKER.SET_PARAM_NUM('NCOMPANY',  118960 ); END; 
/
BEGIN PKG_PROC_BROKER.SET_PARAM_NUM('NCRN',  118993 ); END; 
/
BEGIN PKG_PROC_BROKER.SET_PARAM_STR('SPREF', '1'); END; 
/
BEGIN PKG_PROC_BROKER.SET_PARAM_STR('SNUMB', '2'); END; 
/
BEGIN PKG_PROC_BROKER.SET_PARAM_STR('SCLNPSPFMTYPES', 'приказ'); END; 
/
BEGIN PKG_PROC_BROKER.SET_PARAM_STR('SPERSCODE', 'Ануфриев С.П.#1#000006#АСПО'); END; 
/
BEGIN PKG_PROC_BROKER.SET_PARAM_DAT('DBEGENG','10.07.2007' ); END; 
/
BEGIN PKG_PROC_BROKER.SET_PARAM_NUM('NINSERT_MODE',  1 ); END; 
/
BEGIN PKG_PROC_BROKER.EXECUTE('P_CLNPSPFM_INSERT', 1 );END;
/
BEGIN PKG_PROC_BROKER.EPILOGUE; END; 
/
commit
/

ENDTEXT
=SQLEXEC(gnConnHandle,SqlString)
Должно заработать. Обратить внимание на пустую строку перед ENDTEXT: должна быть.
...
Рейтинг: 0 / 0
вызов хранимой процедуры оракл из фокспро
    #34762606
RustamK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо. У меня все получилось.
Код: plaintext
=SQLEXEC(gnConnHandle,"{call PKG_PROC_BROKER.EPILOGUE;}")
изменил на
Код: plaintext
=SQLEXEC(gnConnHandle,"begin PKG_PROC_BROKER.EPILOGUE;end;")
и немного по исправлял, вызов некоторых процедур.
Еще раз всем спасибо, узнал много нового.
...
Рейтинг: 0 / 0
вызов хранимой процедуры оракл из фокспро
    #34762933
Фотография FM32YO aka KID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RustamKВсем спасибо. У меня все получилось.
Код: plaintext
=SQLEXEC(gnConnHandle,"{call PKG_PROC_BROKER.EPILOGUE;}")
изменил на
Код: plaintext
=SQLEXEC(gnConnHandle,"begin PKG_PROC_BROKER.EPILOGUE;end;")
и немного по исправлял, вызов некоторых процедур.
Еще раз всем спасибо, узнал много нового.

и всего-то!!!

ты просто не поверишь, если б ты заменил
Код: plaintext
=SQLEXEC(gnConnHandle,"{call PKG_PROC_BROKER.EPILOGUE;}")
на
Код: plaintext
=SQLEXEC(gnConnHandle,"{call PKG_PROC_BROKER.EPILOGUE}")
какое бы наслаждение испытал
...
Рейтинг: 0 / 0
вызов хранимой процедуры оракл из фокспро
    #34762972
GUG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GUG
Гость
И еще, пакет оракла дергают через фокс только дЭбилы. Уже всем понятно что для покетов нужно делать оберку.

бл?*:!, студенты уже порядком заебли тут.
...
Рейтинг: 0 / 0
вызов хранимой процедуры оракл из фокспро
    #34763068
fm32----
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GUGИ еще, пакет оракла дергают через фокс только дЭбилы. Уже всем понятно что для покетов нужно делать оберку.

бл?*:!, студенты уже порядком заебли тут.

не надо бл...
ты бы пояснил-то что под оберткой понимаешь-то?
я, честно говоря Оракл не дергал.. а дергал вот так PostgreSQL
а под оберткой у меня класс,в который передается СКЛ-строка, и еще пара параметров..
но ты видимо под оберткой понимаешь что-то иное.....

хотелось бы услышать..
впрочем я уже давно не дивелопер....
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / вызов хранимой процедуры оракл из фокспро
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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