Why can't this stored procedure be called? (FreeTDS_JDBC and jtds)

Bob Kline bkline at rksystems.com
Mon Sep 10 08:37:33 EDT 2001


On Mon, 10 Sep 2001, Anton van Straaten wrote:

> To summarize for anyone else reading this, here's a stored procedure
> for MS SQL 6.5 which works fine in all environments, but I can't
> successfully call with any version of the FreeTDS JDBC drivers,
> including the SourceForge version or Curt Hagenlocher's version:
> 
> 	create procedure spTestExec as
> 		create table #tmp ( Result varchar(50) )
> 		insert #tmp execute spTestExec2
> 		select * from #tmp
> 
> The above depends on the following procedure:
> 
> 	create procedure spTestExec2 as
> 		select 'Did it work?' as Result	-- substitute text depending on degree of
> optimism
> 
> If anyone is kind enough to take the time to try this and can
> actually get it working with SQL 6.5 and FreeTDS JDBC, please let me
> know, because then at least I'll know that there's something wrong
> with my setup or something I'm doing, rather than with the FreeTDS
> JDBC driver.  At the moment, I must admit I suspect a FreeTDS JDBC
> limitation, although it's not clear to me why the innards of a
> stored procedure should affect FreeTDS, other than the speculation
> about multiple result sets in my first message.

I have it working against SQL Server 7.0 using the March 7 code (I
believe that's the latest change that has been made to the code on the
freetds site).  Don't have a convenient SQL Server 6.5 lying around.

One thing I haven't seen is any of your Java code.  Perhaps it might be
helpful to compare what's working with what isn't.  Mine looks like
this:

    public static void main(String[] av) {
        String url = "jdbc:freetds:sqlserver://xxx/xxx;TDS=70";
        String uid = "xxx";
        String pwd = "xxx";
        try {
            Class.forName("com.internetcds.jdbc.tds.Driver");
            java.sql.Connection connection
                = java.sql.DriverManager.getConnection(url, uid, pwd);
            java.sql.Statement st = connection.createStatement();
            java.sql.ResultSet rs
                = st.executeQuery("EXEC spTestExec");
            while (rs.next())
                System.out.println(rs.getString(1));
            st.close();
            connection.close();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }

-- 
Bob Kline
mailto:bkline at rksystems.com
http://www.rksystems.com




More information about the FreeTDS mailing list