powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вызов процедуры из ORA
8 сообщений из 8, страница 1 из 1
Вызов процедуры из ORA
    #35666485
Muka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Ситуация: необходимо вызвать процедуру из ORACLE.
В нее передаются параметры и позвращаются.
Сейчас формирую так:

Код: 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 strSql TEXTMERGE NOSHOW PRETEXT  3 
{call P_TRANSINVCUSTSPECS_INSERT (<<nCompany>>,
<<nPrn>>,
<<sTaxGr>>,
<<sGoodsParty>>,
<<sNomen,
<<sNomModif>>,
<<sNomnModifPack>>,
<<sArticle>>,
<<sCell>>,
<<sHLCARGOCLASS>>,
<<nTEMPERATURE>>,
<<nPrice>>,
<<nDiscount>>,
<<nQuant>>,
<<nQuantAlt>>,
<<nCOEFF>>,
<<nCOEFF_VAL_SIGN>>,
<<nCOEFF_CALC_SIGN>>,
<<nPriceMeAs>>,
<<nSumm>>,
<<nSummWithNds>>,
<<dBeginDate>>,
<<dEndDate>>,
<<sSerNumb>>,
<<sCountry>>,
<<sGTD>>,
<<sNote>>,
?@nRn,
?@sMsg)}
ENDTEXT
Не уверен в том как тут засунуть возвращаемые параметры ?

?@nRn,
?@sMsg

так верно или нет ? Если не верно, то как. Нужно именно через TEXT, так как в дальнейшем
параметров будет еще больше и собирать огромную строку, как-то не хочется.
...
Рейтинг: 0 / 0
Вызов процедуры из ORA
    #35666511
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если вопрос по исп-ю text-endtext, то я написал-бы так
(PRETEXT 15 для 9-й версии)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
privat nRn
TEXT TO strSql TEXTMERGE NOSHOW PRETEXT  15 
     {call P_TRANSINVCUSTSPECS_INSERT (
         <<nCompany>>
        ,<<nPrn>>
        ,<<sTaxGr>>
        ,<<sGoodsParty>>
...
endtext

авторНе уверен в том как тут засунуть возвращаемые параметры

а как Вы в строку их пишете? ну так-же и здесь пишите
...
Рейтинг: 0 / 0
Вызов процедуры из ORA
    #35666531
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот код для t-sql
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
                private pnResult
	pnResult =  0 
	text to lcSelectCmd textmerge noshow pretext  7 
	     {?@pnResult = CALL dbo.ееее('<<ееее>>',null)}
	endtext
	if L_SQLEXEC (,lcSelectCmd)< 0  or pnResult< 0 
	   return - 1 
	endif

как в Pl я не знаю
...
Рейтинг: 0 / 0
Вызов процедуры из ORA
    #35666534
Muka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В строку так пишу
Код: plaintext
'?sSerNumb,'+'?sCountry,'+'?sGTD,'+'?sNote,'+'?@nRn,'+'?@sMsg)}'

Через TEXT так:
Код: plaintext
1.
2.
3.
4.
5.
6.
TEXT TO strSql TEXTMERGE NOSHOW PRETEXT  15 
{call P_TRANSINVCUSTSPECS_INSERT (<<nCompany>>,
<<nPrn>>,
...
?@nRn,
?@sMsg)}
ENDTEXT

К сожалению, проверить не могу, вот и справшиваю, верно ли ?
...
Рейтинг: 0 / 0
Вызов процедуры из ORA
    #35666544
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор'?sSerNumb,'+'?sCountry,'+'?sGTD,'+'?sNote,'+'?@nRn,'+'?@sMsg)}'

это будет так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
text to lcSqlCmd noshow pretext  15 
     ?sSerNumb
    ,?sCountry
    ,?sGTD
    ,?sNote
    ,?@nRn
    ,?@sMsg)}
endtext

textmerge нужен если вы пишите чтото в указателях <<>> (для подстановки значения перем-й в строку)
...
Рейтинг: 0 / 0
Вызов процедуры из ORA
    #35667036
miv32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
STORE SQLCONNECT("ODBC-коннект","схема в Оракле","пароль") TO THISFORM.gnConnHandle

IF SQLEXEC(THISFORM.gnConnHandle,"call процедура(?параметр1,?параметр2,?параметр3)") < 0
MESSAGEBOX("Ошибка при выполнении операции",16,"Ошибка")
ENDIF
...
Рейтинг: 0 / 0
Вызов процедуры из ORA
    #35668998
burik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуй, примерно, Так:

Код: 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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
pDSN = 'Oracle in OraHome92'
pDNS = ' ' &&Название бази Оракла или DNS
pUID = ' ' &&Пользователь 
pPWD = ' ' &&Пароль 

SET TEXTMERGE ON
SET TEXTMERGE TO MEMVAR lcSqlCmd NOSHOW

\select P_TRANSINVCUSTSPECS_INSERT (<<nCompany>>,
\<<nPrn>>,
\<<sTaxGr>>,
\<<sGoodsParty>>,
\<<sNomen,
\<<sNomModif>>,
\<<sNomnModifPack>>,
\<<sArticle>>,
\<<sCell>>,
\<<sHLCARGOCLASS>>,
\<<nTEMPERATURE>>,
\<<nPrice>>,
\<<nDiscount>>,
\<<nQuant>>,
\<<nQuantAlt>>,
\<<nCOEFF>>,
\<<nCOEFF_VAL_SIGN>>,
\<<nCOEFF_CALC_SIGN>>,
\<<nPriceMeAs>>,
\<<nSumm>>,
\<<nSummWithNds>>,
\<<dBeginDate>>,
\<<dEndDate>>,
\<<sSerNumb>>,
\<<sCountry>>,
\<<sGTD>>,
\<<sNote>>,
\?@nRn,
\?@sMsg)
\ from dual

SET TEXTMERGE TO
SET TEXTMERGE OFF



Constring ='DSN=&pDSN;DRIVER={Oracle in OraHome92};DBQ=&pDNS;UID=&pUID;PWD=&pPWD'
nQ=SQLSTRINGCONNECT(Constring)
IF nQ< 0 
    =messagebox('Ошибка подключения к Ораклу', 16 ,"Ошибка программы!")
RETURN
ELSE 
    z=SQLEXEC(nQ,lcSqlCmd,'oraCursor')

 	  IF z< 0 
  	     =sqldisconnect(nQ)
 	     =messagebox("Ошибка запроса ", 16 'Сообщение:')
 	    return
 	  ENDIF 

   =messagebox("Все зашибись", 0 ,'Сообщение:')
    
 ENDIF
...
Рейтинг: 0 / 0
Вызов процедуры из ORA
    #35669202
Muka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я спросил просто о структуре вызова возвращаемых параметров, а не о подключении и прочих вещах... Проверил свой вариант и оказался прав :)) Всем спасибо. Разминайтесь дальше, но не забывайте, что кроме ODBC, есть еще и OLE DB ;)
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вызов процедуры из ORA
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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