【发布时间】:2019-09-13 23:36:08
【问题描述】:
这个问题之前已经提出过,但不是专门针对 Oracle 数据库提出的。
可以使用 WHERE 子句过滤 FOR LOOP 吗?例如,我想做类似的事情:
--LOG ERRORS
FOR err in c_errors WHERE trx_type='CYCLE_COUNT'
LOOP
...do some stuff
END LOOP;
此代码给出错误:
PLS-00103: Encountered the symbol "WHERE" when expecting one of the following ...
这有合适的语法吗?
这里是游标定义。它抓取周期计数和调整交易类型。但是在上面提到的日志错误部分,我只想报告循环计数错误。当然我可以使用单独的游标,但我试图用一个来完成。
CURSOR c_errors IS
SELECT DISTINCT CC_ENTRY_INTERFACE_ID INTERFACE_ID
,ERROR_MESSAGE
,creation_date
,LAST_UPDATE_DATE
,'CYCLE_COUNT' TRX_TYPE
FROM mtl_cc_interface_errors
UNION
SELECT DISTINCT TRANSACTION_INTERFACE_ID
,ERROR_EXPLANATION
,CREATION_DATE
,LAST_UPDATE_DATE
,'ADJUSTMENT'
FROM mtl_transactions_interface
WHERE process_flag=3
AND error_code IS NOT NULL
ORDER BY last_update_date DESC;
【问题讨论】:
-
为了什么?请描述您正在尝试做的事情。样本数据和所需结果的帮助。
-
我想我可以在进入循环后使用 IF ,但它并没有真正达到预期的结果,因为它仍然会循环遍历光标选择的所有记录。也许需要一个单独的光标。