我有以下查询:
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-“无效编号” *原因:指定的号码无效。 *操作:指定一个有效的数字。
请帮助我解决此问题。
答案 0 :(得分:0)
为什么要两次选择PARAMETER1
?
从错误中得知:看来列名应该匹配,至少通过查看列名(例如request_id
至request_id
,{{1} }到status_id
等),因此剩下的就是最后两行:
status_id
如果这些列的数据类型不是AND parameter2 < 100
AND parameter3 >= 100
而是NUMBER
,则应将VARCHAR2
括在单引号中(即改为使用100
)。
如果这样做没有帮助,请提供一些其他信息(表的描述会有所帮助)。