[Zope] REF CURSOR variables and Zope Stored Prodcedures in Oracle
Ricardo Seghizzi
ricardo@cnbe.mar.org.uk
Fri, 10 Aug 2001 10:15:15 +0100
This is a multi-part message in MIME format.
------=_NextPart_000_00FA_01C12185.5944E9A0
Content-Type: text/plain;
charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable
Can someone help me?
I have a package with a procedure like that:
PACKAGE test_pkg IS
TYPE rc_assuntos IS REF CURSOR
=20
PROCEDURE GETALL(result IN OUT rc_assuntos);
=20
END;
PACKAGE BODY TEST_PKG IS
=20
PROCEDURE GETALL(result IN OUT rc_assuntos) IS
BEGIN
OPEN result FOR SELECT tema_primario FROM ASSUNTOS;
END
=20
END;
As you can see this procedure has as input/output variable type a REF =
CURSOR.
I have created a ZSP to use the function above:
ZSP description:=20
procedure TEST_PKG.GETALL has arguments:
RESULT IN OUT REF CURSOR
I cold not test it because it asked for a cursor as input.
=20
So... I tried to use an Python Script like that to pass and receive a =
cursor for this ZSP:
"""
teste
NO PARAMETERS LIST.
"""
db=3D context.Oracle_database_connection # use my current Oracle =
conection. Is it correct?
c=3D db.cursor() # create a =
cursor object =20
dbsproc =3D context.ZOSP2(c) # call mu ZSP and =
pass the cursor object
rs=3Dc.fetchall() # get the =
result set and use it
print rs
When I run this Script I have the folloing error:
Error Type: AttributeError
Error Value: cursor
So what is wrong? =20
=20
What can I do to receive a REF CURSOR type from a ZSP from ZOPE?=20
=20
Or getting a REF CURSOR type from an Oracle procedure using ZOPE?
=20
Is there an easier way?
Can I use External Method? If I can, how do I do it?
Many thanks.=20
=20
Ricardo
------=_NextPart_000_00FA_01C12185.5944E9A0
Content-Type: text/html;
charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=3D"text/html; charset=3Dwindows-1252" =
http-equiv=3DContent-Type>
<META content=3D"MSHTML 5.00.2920.0" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>
<DIV><FONT face=3DArial size=3D2>Can someone help me?</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>I have a package with =
a procedure like=20
that:</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=3DArial size=3D2>PACKAGE test_pkg IS</FONT></DIV>
<DIV><FONT face=3DArial size=3D2><BR> TYPE rc_assuntos IS REF=20
CURSOR</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2> PROCEDURE GETALL(result IN =
OUT=20
rc_assuntos);<BR> <BR> END;</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=3DArial size=3D2>PACKAGE BODY TEST_PKG IS<BR> =
</FONT></DIV>
<DIV><FONT face=3DArial size=3D2> PROCEDURE GETALL(result IN OUT =
rc_assuntos)=20
IS<BR> BEGIN<BR> OPEN result FOR SELECT =
tema_primario =20
FROM ASSUNTOS;<BR> END</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>END;</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=3DArial size=3D2>As you can see this procedure has =
as=20
input/output variable type a REF CURSOR.</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=3DArial size=3D2>I have created a ZSP to use the =
function=20
above:</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=3DArial size=3D2>ZSP description: </FONT></DIV>
<DIV><FONT size=3D4><PRE>procedure TEST_PKG.GETALL has arguments:
RESULT IN OUT REF CURSOR</PRE><PRE>
</PRE></FONT></DIV>
<DIV><FONT face=3DArial size=3D2>I cold not test it because it asked for =
a cursor as=20
input.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>So... I tried to use an Python Script =
like that to=20
pass and receive a cursor for this ZSP:</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=3DArial size=3D2>"""<BR>teste</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>NO PARAMETERS LIST.</FONT><FONT =
face=3DArial=20
size=3D2><BR>"""</FONT></DIV>
<DIV><FONT face=3DArial size=3D2><BR>db=3D=20
context.Oracle_database_connection # use =
my=20
current Oracle conection. Is it correct?<BR>c=3D=20
db.cursor() &n=
bsp; &nb=
sp; &nbs=
p; # &nbs=
p;create=20
a cursor object <BR>dbsproc =3D=20
context.ZOSP2(c) &nb=
sp; =20
# call mu ZSP and pass the cursor=20
object<BR>rs=3Dc.fetchall() &nbs=
p;  =
; =
=20
# get the result set and use it<BR>print =
rs</FONT></DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV><FONT face=3DArial size=3D2>When I run this Script I have the =
folloing=20
error:</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=3DArial size=3D2><STRONG>Error Type:=20
AttributeError</STRONG><BR><STRONG>Error Value: =
cursor</STRONG><BR></FONT></DIV>
<DIV><FONT face=3DArial size=3D2>So what is =
wrong? </FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>What can I do to receive a REF CURSOR =
type from a=20
ZSP from ZOPE? </FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>Or getting a REF CURSOR type from an =
Oracle=20
procedure using ZOPE?</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>Is there an easier way?</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=3DArial size=3D2>Can I use External Method? If I can,=20
how </FONT><FONT face=3DArial size=3D2>do I do =
it?</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=3DArial size=3D2>Many thanks. </FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV> </DIV>
<DIV>Ricardo</DIV></FONT></DIV></BODY></HTML>
------=_NextPart_000_00FA_01C12185.5944E9A0--