我该如何解决?

时间:2018-09-18 10:29:05

标签: oracle oracle12c

我有以下查询:

SELECT parameter1, parameter1 
FROM kcrt_table_entries 
WHERE parameter_set_field_id = (SELECT parameter_set_field_id 
                                FROM knta_parameter_set_fields 
                                WHERE PROMPT = 'Matrix:'
                               )
  AND request_id = (SELECT kr.request_id 
                    FROM kcrt_requests kr 
                    WHERE kr.request_type_id = (SELECT request_type_id 
                                                FROM kcrt_request_types 
                                                WHERE request_type_name = 'RHB - Risk Rating Questionnaire'
                                               ) 
                      AND kr.status_id = (SELECT status_id 
                                          FROM kcrt_statuses 
                                          WHERE status_name = 'Admin-Reading'
                                         ) 
                   ) 
  AND parameter2 <  100 
  AND parameter3 >= 100

当我运行它时,它给我以下错误:

  

ORA-01722:无效的号码   01722. 00000-“无效编号”   *原因:指定的号码无效。   *操作:指定一个有效的数字。

请帮助我解决此问题。

1 个答案:

答案 0 :(得分:0)

为什么要两次选择PARAMETER1

从错误中得知:看来列名应该匹配,至少通过查看列名(例如request_idrequest_id,{{1} }到status_id等),因此剩下的就是最后两行:

status_id

如果这些列的数据类型不是AND parameter2 < 100 AND parameter3 >= 100 而是NUMBER,则应将VARCHAR2括在单引号中(即改为使用100)。

如果这样做没有帮助,请提供一些其他信息(表的描述会有所帮助)。