[DB-SIG] Parameters in DCOracle2

Matthew T. Kromer matt@zope.com
Wed, 21 Aug 2002 09:45:11 -0400


James Briggs wrote:

>[...]
>
>3) Tweak or Force DCOracle2, or the interface of your choic,e to convert string bind variables to CHAR datatypes not VARCHAR datatypes, using DCOracle2.TypeCoercion??? Not sure this is possible, I haven't had access to a database to test this yet. I do know in the C layer it is possible to define arrays to be mapped to the CHAR type...
>  
>

Yes, that will work.  Here's an example:

SQL> describe testchar
 Name                                      Null?    Type
 ----------------------------------------- -------- 
----------------------------
 ID                                                 NUMBER(38)
 CS                                                 CHAR(12)
 VC                                                 VARCHAR2(12)

SQL> select * from testchar;

        ID CS           VC
---------- ------------ ------------
         1 MATT         MATT



import DCOracle2
db = DCOracle2.connect('scott/tiger')
c = db.cursor()
c.execute('select * from testchar where cs=:1',
    DCOracle2.TypeCoercion('MATT', 'SQLT_AFC'))

print c.fetchall()


However, its fairly nonobvious that 'SQLT_AFC' (ANSI Fixed Character) is 
the type you get when you use datatype 'CHAR' -- you'd expect that to be 
'SQLT_CHR' but that's VARCHAR.

-- 
Matt Kromer
Zope Corporation  http://www.zope.com/