SQL Error: ORA-00933: SQL command not properly ended in Oracle Update query

SQL Error: ORA-00933: SQL command not properly ended in Oracle Update query

我有 SYSTEM_SQL_CHECK table,其中我在 CHECK_SQL 列中保存了 sql。此列是 Varchar 数据类型。现在我想更新特定的 sql.I 已经写在更新 sql 查询下面但是它给出了一个错误 SQL Error: ORA-00933: SQL command not properly ended。我也尝试用双引号查询,但随后出现 SQL Error: ORA-00972: identifier is too long.

错误
    Update RATOR_MONITORING_CONFIGURATION.SYSTEM_SQL_CHECK SET CHECK_SQL = 'select count(*) as CNT from O2_SDR_Header
where id = (select max(id) from O2_SDR_Header where id > 2012000000000000 and sp_id = 'SP602') 
And sp_id = 'SP602' and FILE_CREATED_DATE > (SYSTIMESTAMP - INTERVAL '2' HOUR)'
WHERE SYSTEM_SQL_CHECK_ID = 604;

您需要对单引号进行转义,如下所示

Update RATOR_MONITORING_CONFIGURATION.SYSTEM_SQL_CHECK SET CHECK_SQL = "select count(*) as CNT from O2_SDR_Header
where id = (select max(id) from O2_SDR_Header where id > 2012000000000000 and sp_id = ''SP602'') 
And sp_id = ''SP602'' and FILE_CREATED_DATE > (SYSTIMESTAMP - INTERVAL '2' HOUR)"
WHERE SYSTEM_SQL_CHECK_ID = 604;

这段代码应该是这样的:sp_id = 'SP602'sp_id = ''SP602''

和这个 '2'''2''

你的最终代码应该是这样的

 Update RATOR_MONITORING_CONFIGURATION.SYSTEM_SQL_CHECK SET CHECK_SQL = 'select count(*) as CNT from O2_SDR_Header
where id = (select max(id) from O2_SDR_Header where id > 2012000000000000 and sp_id = ''SP602'') 
And sp_id = ''SP602'' and FILE_CREATED_DATE > (SYSTIMESTAMP - INTERVAL ''2'' HOUR)'
WHERE SYSTEM_SQL_CHECK_ID = 604;