On Fri, 2002-09-13 at 10:22, ?????? ?. wrote:
Oracle differentiates between functions and procedures so you must
identify that you are calling a function, not a procedure. The DB API
does not allow for this, so you must use an anonymous PL/SQL block and
some non DB API code. The way to do this is as follows:
ok. I also tried that, I mean a PL/SQL block... but
Replace the data types as appropriate.
v_Vars = v_Cursor.setinputsizes(p_Result = cx_Oracle.NUMBER)
didn't know about this :)) thanks.
If anyone has suggestions about how to improve this, fire away... :-)
yes, put it in the documentation.
Actually is there any documentation about cx_Oracle, past the README
Bits and pieces in a variety of places. The assumption (to date) has
been that the DB API is sufficient for almost everything and that you
really shouldn't use extensions.... :-) However, over the couple of
years that I have been using the DB API I have discovered a fair number
of deficiencies with respect to Oracle, in particular when it comes to
performance and quirks of Oracle. It hasn't been a problem for me since
I wrote cx_Oracle, but it has been my desire to consolidate the DB API
document with descriptions of the extensions used by cx_Oracle -- I hope
to do something about this in the next month or so.
Now a simpler question:
is it possible to specify the data source name directly not through
the alias defined in tnsnames.ora. In perl DBD I can specify a
connection string like cs = "dbi:Oracle:host=188.8.131.52;sid=TEST"?
cx_Oracle is passing the string directly to Oracle, so whatever it
accepts, cx_Oracle will accept. Specifically, you can take the entire
string that is in your tnsnames.ora file and pass it directly as in
v_Connection = cx_Oracle.connect("user", "pw", v_TNS)
and that works just fine. Does that answer your question?
anthony at computronix.com
Distinctive Software. Real People.
Suite 200, 10216 - 124 Street NW
Edmonton, AB, Canada T5N 4A3
Phone: (780) 454-3700
Fax: (780) 454-3838http://www.computronix.com