Plsql PL/SQL-最后一个_值是否返回多行?
我正在做一个学校分配,在那里我需要得到“code”的最后一个值,这样我就可以插入下一行,代码递增。我试着这样把它拔出来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
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外部运行此命令,以查看返回的结果。