Ну и, наконец, третий пример:
*****************
*!* CREATE OR REPLACE PACKAGE my_pkg AS
*!* TYPE curTyp IS REF CURSOR RETURN myvu%ROWTYPE;
*!* PROCEDURE open_my_cur (my_cur IN OUT curTyp,
*!* choice IN VARCHAR2);
*!* END my_pkg;
*!* /
*!* CREATE OR REPLACE PACKAGE BODY my_pkg AS
*!* PROCEDURE open_my_cur (my_cur IN OUT curTyp,
*!* choice IN VARCHAR2) IS
*!* BEGIN
*!* OPEN my_cur FOR SELECT * from myvu
*!* where the_key = choice ;
*!* END open_my_cur;
*!* END my_pkg;
*!* /
close all
clear all
release all
clear
oVFPCOM = CreateObject('vfpcom.comutil')
con = createobject("ADODB.Connection")
Rst = createobject("ADODB.RecordSet")
con.Open("DSN=OraHTR;User Id=htr;PASSWORD=wingsof;UID=htr;SERVER=htr")
strSP = "htr.htr_pkg_dev.open_trjn_cur(?, '00000001')"
rst.open(strSP, con, 0, 1, 4)
?rst.fields.count
nError = oVFPCOM.RSToCursor(rst, 'myadocur')
if nError >= 0
select myadocur
browse
else
?nError
=aerror(ae)
?'Error Text'
disp memo like ae
?'********************'
rst.close
con.close
close all
clear all
release all
return
*****************
*****************
local nHndl, nSQLResult, noVal, cJobNo, ae
nHndl = sqlconnect("OraDSN")
if nHndl <+ 0
=aerror(ae)
disp memo like ae
sqldisconnect(0)
return
endif
noVal = ''
nSQLResult = SQLExec(nHndl, "{call usr.my_pkg.open_my_cur (?noVal, '00000001')}","MyCursor")
scatter NAME oSPora
DEBUG
use in MyCursor
* ...
Если не использовать DSN:
Local loConnection,lcConnectString
loConnection = CreateObject("adodb.connection")
With loConnection
lcConnectString = "Provider=MSDAORA.1;Password=mypassword;User ID=myname;Data Source=mydata.forme.com"
.ConnectionString = lcConnectString
.Open
Endwith
loRecordSet = CreateObject("adodb.recordset")
lcCommandText = ;
"GET_CURSOR_PKG.GET_MembershipCursor(?,'2474','3281')"
loRecordSet.Open(lcCommandText,loConnection, 0, 1, 4)
lnRecords = loRecordSet.recordcount
Release all