我正在使用 ojdbc8 运行直接查询,该查询会抛出java.sql.SQLSyntaxErrorException: ORA-01722: invalid number
某些结果。
这发生在 SQL Developer 中并通过 java API(这里的名称是 varchar):
Statement sel = conn.createStatement();
ResultSet rs = sel.executeQuery("select * from t1 order by name");
while(rs.next())
通过调试,我隔离了几行导致错误的行,但是当我仅选择这些行(而不是选择 *)时,我没有遇到错误,这让我相信这可能是某种驱动程序/性能问题?
我还尝试使用我在 SO 上找到的代码查找错误数据,但它返回时没有错误(PL/SQL procedure successfully completed
):
set serveroutput on
DECLARE
exc EXCEPTION;
PRAGMA EXCEPTION_INIT(exc, -1722);
l_message VARCHAR2(4000);
BEGIN
EXECUTE IMMEDIATE
'select * from t1 order by name';
EXCEPTION
WHEN exc THEN
l_message := regexp_replace(sqlerrm, '^[A-Z]{3}-[0-9]{5}: "([^"]+)".*$', '\1');
dbms_output.put_line ( 'bad data '''||l_message||'''');
dbms_output.put_line ( 'exception: sqlcode='||SQLCODE||', sqlerrm='''||sqlerrm||'''');
WHEN OTHERS THEN
RAISE;
END;