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 可以准确地确定记录类型所需的列数、类型和顺序。
我正在尝试创建一个 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 可以准确地确定记录类型所需的列数、类型和顺序。