PL / SQL:ORA-00913:值太多了

时间:2017-01-17 11:18:39

标签: sql oracle ora-00913

我正在尝试创建一个sql函数,用于打印客户在给出其名称时所做的预订。客户名称位于名为CLIENTS.FNAME CLIENTS.MNAME CLIENTS.LNAME的表中,以及由id-外键搜索的预留 该函数的代码显示“太多值”错误,可能必须由Loop或其他东西完成?

create or replace FUNCTION cl_reserv(clName VARCHAR2)

RETURN RESERVATIONS%ROWTYPE

IS
resRecord RESERVATIONS%ROWTYPE;

BEGIN
  SELECT RESID,STARTDATE,ENDDATE,ADDINFO INTO resRecord
           FROM RESERVATIONS INNER JOIN CLIENTS ON RESERVATIONS.CLIENTID=CLIENTS.CLIENTID
           WHERE clName IN (FNAME,MNAME,LNAME);
RETURN resRecord;
END;

1 个答案:

答案 0 :(得分:1)

您的SELECT子句与您尝试选择的记录不匹配。像这样更改你的代码:

CREATE OR REPLACE FUNCTION cl_reserv(clName VARCHAR2)
    RETURN RESERVATIONS%ROWTYPE 
IS
    resRecord RESERVATIONS%ROWTYPE;

BEGIN
  SELECT r.* INTO resRecord
           FROM RESERVATIONS r INNER JOIN CLIENTS c ON r.CLIENTID=c.CLIENTID
           WHERE clName IN (FNAME,MNAME,LNAME);
    RETURN resRecord;
END cl_reserv;

通过使用r.*,您可以准确选择记录类型所需的列数,类型和顺序。