2016-03-21 17 views
0

Javaストアドプロシージャを作成し、jarにパッケージ化し、Teradataデータベースにインストールしました。 hereのように、デフォルトのデータベース接続を使用したいと思います。ほとんどのコードは、ストアド・プロシージャ用のTeradataウィザードによって生成されました。Teradataの外部Javaストアドプロシージャエラー:jdbc: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; 
    } 
} 

私はjarファイルがインストール:

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

を、プロシージャを作成しました:

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

:私はこのプロシージャを呼び出すとき

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[])'; 

は今、私は、このエラーメッセージが表示されます

今すぐTeradaからログオフすると再度ログオンして手順を呼び出すと、エラーメッセージは次のようになります。

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

ここで問題は何ですか? Eclipseプラグインを使用してTeradataに接続しています。 Teradata v。15.0.1.01。

答えて

0

数時間後、私はついにこの問題を発見しました。 Eclipseはすべての依存関係をjarファイルに圧縮しました。これは基本的には問題ありません。ただし、Teradata JDBCドライバ・ファイル(tdgssconfig.jarおよびterajdbc4.jar)を結果jarにパックしましたが、これは問題でした。

これらのファイルが含まれず、エラーがなくなるようにjar構築プロセスを調整しました。

関連する問題