【发布时间】:2015-07-18 07:35:42
【问题描述】:
我目前正在执行我的第一年任务,即使用 Oracle Apex 构建数据库,并尝试创建一个包含字段以过滤显示的表格的报告。为此,请使用 2 个参数(在本例中为牙医预约日期和执行所述预约的工作人员),我使用嵌套案例来检查每个字段。我收到错误:
ORA-06550:第 6 行,第 23 列:ORA-00913:值太多。
我、我的同学和我的导师都没有找到解决方法。希望这里的人能看到我的错误。
这是我的代码:
SELECT
CASE :P5_APPOINTMENT_DATE
WHEN (NULL)
THEN CASE :P5_STAFF
WHEN (NULL)
THEN (select
APPOINTMENT_ID AS "Appointment ID",
Patient.Surname AS "Patient Surname",
Patient.Forename AS "Patient Forename",
Staff.Surname AS "Staff Surname",
A_DATE AS "Date"
FROM Appointment
Inner Join Patient ON Patient.Patient_ID = Appointment.Patient_ID
Inner Join Staff ON Staff.Staff_ID = Appointment.Staff_ID)
ELSE (select
APPOINTMENT_ID AS "Appointment ID",
Patient.Surname AS "Patient Surname",
Patient.Forename AS "Patient Forename",
Staff.Surname AS "Staff Surname",
A_DATE AS "Date"
FROM Appointment
Inner Join Patient ON Patient.Patient_ID = Appointment.Patient_ID
Inner Join Staff ON Staff.Staff_ID = Appointment.Staff_ID
Where STAFF.STAFF_ID = :P5_STAFF)
END
ELSE CASE :P5_STAFF
WHEN (NULL)
THEN (select
APPOINTMENT_ID AS "Appointment ID",
Patient.Surname AS "Patient Surname",
Patient.Forename AS "Patient Forename",
Staff.Surname AS "Staff Surname",
A_DATE AS "Date"
FROM Appointment
Inner Join Patient ON Patient.Patient_ID = Appointment.Patient_ID
Inner Join Staff ON Staff.Staff_ID = Appointment.Staff_ID
Where A_DATE = :P5_APPOINTMENT_DATE)
ELSE (select
APPOINTMENT_ID AS "Appointment ID",
Patient.Surname AS "Patient Surname",
Patient.Forename AS "Patient Forename",
Staff.Surname AS "Staff Surname",
A_DATE AS "Date"
FROM Appointment
Inner Join Patient ON Patient.Patient_ID = Appointment.Patient_ID
Inner Join Staff ON Staff.Staff_ID = Appointment.Staff_ID
Where A_DATE = :P5_APPOINTMENT_DATE AND STAFF.Surname = :P5_STAFF)
END
END
FROM APPOINTMENT
【问题讨论】:
-
A
case只返回一个值。您的子查询返回多个值。将您的查询改写为其他内容。或者,删除此问题并询问另一个问题,提供示例数据和所需结果以及您正在尝试做什么的描述。 -
如果您尝试根据参数运行不同的查询,我会使用
IF/ELSE逻辑。
标签: sql oracle oracle11g oracle-apex