LAST_ERROR_POSITIONは、直近にDBMS_SQL.PARSEを呼び出した際に構文エラーが発生した位置を取得するために使用されます。
DBMS_SQL.PARSEでSQLステートメントにエラーが発生した場合、すぐにDBMS_SQL.LAST_ERROR_POSITIONを呼び出すことで、エラーが発生した位置を取得できます。
機能の適用範囲
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみ提供します。
構文
DBMS_SQL.LAST_ERROR_POSITION
RETURN INTEGER;
戻り値
エラーが発生した位置をSQLステートメントテキスト内で対応するバイトオフセットとして表すINTEGER値を返します。
例
以下の例では、5行目のSQLステートメントselect * form dualでfromが誤ってformと綴られているため、例外が発生します。この時点でDBMS_SQL.LAST_ERROR_POSITION()を呼び出すと、エラーが発生した位置が返されます。
obclient > DECLARE
CUR NUMBER;
BEGIN
CUR:=dbms_sql.open_cursor;
dbms_sql.parse(CUR,'select * form dual',dbms_sql.native);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('error pos: ' || dbms_sql.last_error_position());
END;
/
Query OK, 1 row affected
error pos: 9