Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вызов процедуры из ORA / 8 сообщений из 8, страница 1 из 1
20.11.2008, 18:24
    #35666485
Muka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов процедуры из ORA
Добрый день!
Ситуация: необходимо вызвать процедуру из 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
20.11.2008, 18:35
    #35666511
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов процедуры из ORA
если вопрос по исп-ю 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
20.11.2008, 18:42
    #35666531
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов процедуры из ORA
вот код для 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
20.11.2008, 18:42
    #35666534
Muka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов процедуры из ORA
В строку так пишу
Код: 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
20.11.2008, 18:46
    #35666544
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов процедуры из ORA
автор'?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
21.11.2008, 08:17
    #35667036
miv32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов процедуры из ORA
STORE SQLCONNECT("ODBC-коннект","схема в Оракле","пароль") TO THISFORM.gnConnHandle

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

Код: 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
21.11.2008, 22:53
    #35669202
Muka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов процедуры из ORA
Я спросил просто о структуре вызова возвращаемых параметров, а не о подключении и прочих вещах... Проверил свой вариант и оказался прав :)) Всем спасибо. Разминайтесь дальше, но не забывайте, что кроме ODBC, есть еще и OLE DB ;)
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вызов процедуры из ORA / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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