PL/SQL: ORA-00913: 值太多

PL/SQL: ORA-00913: too many values

我正在尝试创建一个 sql 函数,该函数在输入客户姓名时打印客户所做的预订。客户姓名在一个名为 CLIENTS.FNAME CLIENTS.MNAME CLIENTS.LNAME 的 table 中,预订由 id- 外键搜索 函数的代码显示“太多值”错误,也许必须通过循环或其他方式完成?

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;

您的 SELECT 子句与您尝试 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.*,您 select 可以准确地确定记录类型所需的列数、类型和顺序。