通过metaData.getProcedureColumns()方法获取存储过程元数据信息,在oracle中和dm中,方法参数顺序是不一致的。如果参数顺序错误,将无法通过metaData.getProcedureColumns方法获取到存储过程元数据信息。
如下代码所示
if (“dm.jdbc.driver.DmDriver”.equals(metaData.getDriverName())) {
rs = metaData.getProcedureColumns(schema, catlog, procedureName, “%”);
}
else
{
rs = metaData.getProcedureColumns(catlog,schema,procedureName,“%”);
}
在DM中——>方法参数顺序为metaData.getProcedureColumns(模式名, 包名称, 存储过程名称, 列名称);
在ORACLE中——>方法参数顺序为metaData.getProcedureColumns(包名称, 模式名, 存储过程名称, 列名称);
前两个参数的顺序恰好相反。
在DM中涉及到的系统视图有V$PKGPROCS,V$PKGPROCINFOS,V$PKGPROCPARAMS等。
在ORACLE中涉及到的系统视图有all_arguments。
当然还需注意的是在url连接串中,需要加上ORACLE的兼容性参数compatibleMode=oracle
如下所示
// 定义 DM URL 连接串
String urlString = “jdbc:dm://..*.100:5236?compatibleMode=oracle”;
这些问题都是在项目过程中遇到的坑点,非常有记录意义!!!
希望对诸君有用!!!
文章
阅读量
获赞