Sybtcl-2.5b1 & Oratcl-2.5b1

Sybtcl-2.5b1 & Oratcl-2.5b1

Post by Tom Poindext » Thu, 15 May 1997 04:00:00

Sybtcl-2.5b1 and Oratcl-2.5b1 are now available for download and testing.

You can find the packages at:


(if you grabbed Oratcl before this announcement was posted, be aware I uploaded
an earlier version by mistake.  go back and get the current 2.5b1 package.)

What are Sybtcl & Oratcl?  They are database extensions for Tool Command
Language (Tcl) that allow access to Sybase and Oracle.  For a complete
README, follow either HTTP link noted above.

Note that these are beta 1 releases.  That means I've made changes and done
some testing.  Now it is up to you to help me flush out any problems/bugs.
I don't recommend that you use beta releases for production code, but I do
need your help in testing.

Summary of changes:


* Windows NT support:  Makefile and DLL included. Tested under Windows/NT only.
  Mac support is planned, I'm working with another Sybtcl/Mac user to get
  a Makefile and lib.

* CT-Lib compatiblity layer: Sybtcl normally uses Sybase's DB-Lib interface.
  I wrote a DB-Lib to CT-Lib (Sybase's other interface) emulation layer.  What
  this means is that it may be possible to port Sybtcl to Linux.  So far
  I've tested the CT-Lib compatibility on Solaris only.

* sybnext now accepts Tcl variables for binding:  I've added the ability to
  bind result columns to Tcl variables.  The old method of substituting columns
  into a code block still works.  Ex:

        sybsql $h "select au_lname, au_fname from authors"
        sybnext $h { puts "$lname, $fname } "" lname 1 fname 2

  will execute the 'puts' statement for every row returned, binding the
  Tcl variable 'lname' to column 1, 'fname' to column 2.

Oratcl -

* Windows NT support:  Makefile and DLL included.  Tested under Windows/NT only.
  Is anyone game to help with a Mac port?  email me.

* Cursor variables returned from PL/SQL:  The oraplexec command can now bind
  a cursor variable on return from PL/SQL, and fetch rows from that cursor. Ex:

        set exec_cur [oraopen $lda]
        set fetch_cur [oraopen $lda]
        oraplexec $exec_cur {begin
            open :empcursor for select empno, ename
            from emp where job = :job;
        } :job ANALYST :empcursor $fetch_cur
        orafetch $fetch_cur {puts "$num $name"} "" num 1 name 2

* orafetch now accepts Tcl variables for binding:  See the 'sybnext' example
  above.  Tcl variables are bound to result columns for each row returned.

* orabindexec - new command:  Allows Tcl variables to be bound to Oracle :bind
  variables for SQL execution, taking advantage of Oracle's ability to
  pre-parse and cache SQL statements.  Works in conjuction with new 'parseonly'
  option on orasql.  Ex:

        orasql $cur "insert into dept values(:deptno, :dname, :loc)" parseonly
        orabindexec $cur :deptno 98  :dname  ENGINEERING  :loc TUCSON
        orabindexec $cur :deptno 99  :dname  SUPPORT      :loc DENVER

* Asynchronous SQL execution:  Allows sending SQL with immediate return.
  New commands 'orapoll' to check status of SQL; 'orabreak' to interrupt
  SQL execution on server.  New 'async' option for orasql and orabindexec. Ex:

        orasql $cur "select * from emp" async
        puts -nonewline "waiting."
        while {[orapoll $cur] == ""} {
          puts -nonewline "."
        puts "done"

Things to be done before final 2.5 releases:

*more testing, test DLLs under Windows95
*update wisqlite & wosql to use standard dialog, file selects; port to windows
*include Mac makefile & libs.

After these 2.5 releases are stable, I plan to begin work on supporting
Tcl 8.0 interfaces and objects.  


Tom Poindexter