2016-03-21 9 views
0

Ich habe eine Java Stored Procedure geschrieben, in ein jar gepackt und in die Teradata Datenbank installiert. Ich möchte die Standarddatenbankverbindung wie beschrieben here verwenden. Der Großteil des Codes wurde vom Teradata-Assistenten für gespeicherte Prozeduren generiert.Teradata externer Java Stored Procedure Fehler: Kein geeigneter Treiber für jdbc gefunden: default: connection

public class TestSql { 
    public static void getEntryById(int id, String[] resultStrings) throws SQLException { 
     Connection con = DriverManager.getConnection("jdbc:default:connection"); 

    String sql = "SELECT x FROM TEST_TABLE WHERE ID = " + id + ";"; 

    Statement stmt = (Statement) con.createStatement(); 
    ResultSet rs1 = ((java.sql.Statement) stmt).executeQuery(sql); 
    rs1.next(); 
    String resultString = rs1.getString(1); 
    stmt.close(); 
    con.close(); 

    resultStrings[0] = resultString; 
    } 
} 

Ich installierte das Glas:

CALL SQLJ.REPLACE_JAR('CJ!/my/path/Teradata-SqlTest.jar','test'); 

und schuf das Verfahren:

REPLACE PROCEDURE "db"."getEntryById" (
    IN "id" INTEGER, 
    OUT "resultString" VARCHAR(1024)) 
    LANGUAGE JAVA 
    MODIFIES SQL DATA 
    PARAMETER STYLE JAVA 
    EXTERNAL NAME 'test:my.package.TestSql.getEntryById(int,java.lang.String[])'; 

Nun, wenn ich diese Prozedur aufrufen, erhalte ich diese Fehlermeldung:

Executed as Single statement. Failed [7827 : 39001] Java SQL Exception SQLSTATE 39001: Invalid SQL state (08001: No suitable driver found for jdbc:default:connection).

Jetzt wenn ich mich von Terada abmelde ta und wieder anmelden und rufen Sie die Prozedur, die Fehlermeldung wird:

Executed as Single statement. Failed [7827 : 39001] A default connection for a Java Stored Procedure has not been established for this thread.).

Was ist das Problem hier? Ich verbinde mich über das Eclipse-Plugin mit Teradata. Teradata v. 15.0.1.01.

Antwort

0

Nach vielen Stunden habe ich endlich das Problem gefunden. Eclipse hat alle Abhängigkeiten in das Jar gepackt - was grundsätzlich in Ordnung ist. Allerdings hat es auch die Teradata JDBC-Treiberdateien (tdgssconfig.jar und terajdbc4.jar) in das Ergebnis-Jar gepackt, was das Problem war.

Ich habe den Jarbuilding-Prozess angepasst, so dass diese Dateien nicht enthalten sind und die Fehler verschwanden.

Verwandte Themen