我正在将PL / SQL代码转换为Java代码以摆脱数据库依赖性。在PL / SQL中,我们有类似的内容。
SELECT Status_Code, ERROR_CODE, Error_Message
INTO I_Status_Code, I_Error_Code, I_Error_Message
FROM T_Parent_Lots_Api
WHERE Transaction_Id = I_Transaction_Id;
EXCEPTION
WHEN No_Data_Found THEN
I_Status_Code := Failure_Code;
I_Error_Code := SQLCODE;
I_Error_Message := 'Error for transaction id -' || I_Transaction_Id ||
'- in tlotutils.t_update_txn_status-' || SQLERRM;
RETURN;
由于关键字INTO
,我们似乎无法在Java中运行上述SQL查询。我可以编写catch块来处理异常。我可以删除INTO
关键字并执行查询,然后从ResultSet
分配它们,但是这里的挑战是,如果select查询未返回任何数据,则相对Java代码SQLException.getErrorCode()
&{ SQLException.getSQLState
和SQLCODE
函数的{1}}返回空