这是我的先知procedure:
FUNCTION JavaHefExtract_runSingle (
p_company_cd varchar2,
p_srcConnString varchar2,
p_destConnString varchar2,
p_mode number,
p_period number
) return varchar2
IS
LANGUAGE JAVA
NAME 'HefExtract.DoIt(java.lang.String, java.lang.String, java.lang.String, int, int ) return java.lang.String';这是我的java function
import com.microsoft.sqlserver.jdbc.*;
import java.math.BigInteger;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Enumeration;
import oracle.jdbc.*;
import java.io.*;
public class HefExtract
{
public static String DoIt(String orgName, String oracleConnstring, String sqlConnstring, int typ, int iPeriod )
{
String errMsg = null;
Connection sqlConn;
Connection oracleConn;
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Class.forName("oracle.jdbc.OracleDriver");
if (oracleConnstring != null)
oracleConn = DriverManager.getConnection(oracleConnstring);
else
oracleConn = new OracleDriver().defaultConnection();
sqlConn = DriverManager.getConnection(sqlConnstring);
} catch (Throwable e1) {
CharArrayWriter byteSink = new CharArrayWriter();
e1.printStackTrace(new PrintWriter(byteSink));
return byteSink.toString();
}
return errMsg;
}
}当我在procedure块中调用oracle PL/SQL时,将返回此错误:
java.lang.ClassNotFoundException: com/microsoft/sqlserver/jdbc/SQLServerDriver at java.lang.Class.forName0(原生方法) at java.lang.Class.forName(Class.java) at HefExtract.DoIt(HEFEXTRACT:415)
这个错误背后的原因可能是什么?
发布于 2012-08-05 08:11:38
据我所知,在您的情况下没有必要使用驱动程序。只需删除与Microsoft驱动程序相关的所有内容,即删除以下行:
import com.microsoft.sqlserver.jdbc.*;
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");发布于 2012-08-05 05:26:59
阅读这篇关于如何设置类路径的Wiki文章,其中有很多例子。(爪哇)
如果使用Eclipse,请选择项目->属性->项目构建路径-> Java定位jar文件并选择它
如果使用netbeans,请选择项目->属性、->库、->编译、定位jar并选择jar
此帖子还可帮助解决您的问题。
https://stackoverflow.com/questions/11813958
复制相似问题