Plsql PL/SQL-最后一个_值是否返回多行?

Plsql PL/SQL-最后一个_值是否返回多行?,plsql,row,Plsql,Row,我正在做一个学校分配,在那里我需要得到“code”的最后一个值,这样我就可以插入下一行,代码递增。我试着这样把它拔出来 DECLARE v_last_code f_shifts.code%TYPE; BEGIN SELECT LAST_VALUE(code) OVER (ORDER BY code) INTO v_last_code FROM f_shifts; DBMS_OUTPUT.PUT_LINE('Last value is: ' || v_last

我正在做一个学校分配,在那里我需要得到“code”的最后一个值,这样我就可以插入下一行,代码递增。我试着这样把它拔出来

DECLARE

   v_last_code f_shifts.code%TYPE;

BEGIN

   SELECT LAST_VALUE(code) OVER (ORDER BY code)
   INTO v_last_code
   FROM f_shifts;

   DBMS_OUTPUT.PUT_LINE('Last value is: ' || v_last_code);

END;
但是,我得到了
ORA-01422:exact-fetch返回多个请求的行数
我不知道为什么最后一个_值可以超过一行


谢谢

您可以使用这样的嵌套表

DECLARE
   v_last_code f_shifts.code%TYPE;
   TYPE t_tbl IS TABLE OF f_shifts.code%TYPE;
      -- Above line creates the nested table type of the required type.
   v_tbl T_TBL;
      -- Above line creates the nested table variable.
BEGIN

   SELECT code
   BULK COLLECT INTO v_tbl -- collects all the values, ordered, into the nested table
   FROM f_shifts
   ORDER BY code;

   v_last_code = v_tbl(v_tbl.LAST); -- gets the last values and puts into the variable

   DBMS_OUTPUT.PUT_LINE('Last value is: ' || v_last_code);

END;
/

您没有where子句……好吧,我还不太熟悉PLSQL。为什么我需要where子句?我只需要该列中的最后一个值。我该怎么修?谢谢,因为
last_value()
是一个分析函数,而不是像
count(*)那样的聚合函数。这意味着您将返回表中每一行的最后一个值
count(*)
也可以是一个分析函数,但我不想把事情搞得太复杂……每行的最后一个值,听起来不对:-D,你是说按列计算。。那么,…我需要什么,其中code=LAST_值(code)?IDKNo,如果您只想要最后一个值,那么您可能正在查找
max()
?您是否已在PL/SQL外部运行此命令,以查看返回的结果。