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

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

IF SQLExec(gnConnHandle)<0

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

IF gnConnHandle<0
...
Рейтинг: 0 / 0
28.08.2007, 13:04
    #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
28.08.2007, 14:15
    #34758196
RustamK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов хранимой процедуры оракл из фокспро
Мне ошибку выдает №1526
видимо необходимо выбрать другой ODBC драйвер

может ктонибуть скажет каким лучше пользоваться?
я использую Microsoft ODBC for Oracle
...
Рейтинг: 0 / 0
28.08.2007, 14:37
    #34758284
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов хранимой процедуры оракл из фокспро
Попробуй все сразу серверу заслать:
Код: plaintext
1.
2.
lcSql = FileToStr("MyQuery.sql")
SQLEXEC(gnConnHandle,lcSql)
...
Рейтинг: 0 / 0
28.08.2007, 14:37
    #34758288
вызов хранимой процедуры оракл из фокспро
Мне ошибку выдает №1526
видимо необходимо выбрать другой ODBC драйвер
И каким образом проведена логическая зависимость драйвера от ошибки?
Ошибка 1526 - хорошая ошибка, говорящая об неполадках вне фокса.
Ну и где содержимое анализируемого массива, полученного от Aerror()? Мы его должны отгадать?
...
Рейтинг: 0 / 0
28.08.2007, 14:41
    #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
28.08.2007, 14:45
    #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
28.08.2007, 14:52
    #34758361
вызов хранимой процедуры оракл из фокспро
[Oracle][ODBC] Syntax error or access violetion.
Черным по-английски написано про ошибочный синтаксис или отсутствие прав. Соответственно, надо разбираться или с одним, или с другим. Вот и ищите косяк . Кстати, на какой из SQLEXEC() ругается-то?
...
Рейтинг: 0 / 0
28.08.2007, 14:57
    #34758385
RustamK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов хранимой процедуры оракл из фокспро
на все

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

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

Да елки...
Если в проге много строк и непонятно, в какой ошибка, ее стараются локализовать. Например, закомментарить все SQLEXEC кроме первого и т.д.
...
Рейтинг: 0 / 0
29.08.2007, 08:16
    #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
29.08.2007, 08:53
    #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
29.08.2007, 17:43
    #34762606
RustamK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов хранимой процедуры оракл из фокспро
Всем спасибо. У меня все получилось.
Код: plaintext
=SQLEXEC(gnConnHandle,"{call PKG_PROC_BROKER.EPILOGUE;}")
изменил на
Код: plaintext
=SQLEXEC(gnConnHandle,"begin PKG_PROC_BROKER.EPILOGUE;end;")
и немного по исправлял, вызов некоторых процедур.
Еще раз всем спасибо, узнал много нового.
...
Рейтинг: 0 / 0
29.08.2007, 20:00
    #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
29.08.2007, 20:33
    #34762972
GUG
GUG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов хранимой процедуры оракл из фокспро
И еще, пакет оракла дергают через фокс только дЭбилы. Уже всем понятно что для покетов нужно делать оберку.

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

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

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

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


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