为什么我的plsql函数返回一个空字符串?

时间:2020-05-09 13:53:19

标签: plsql sqlplus stored-functions

这是概念模型conceptual model

在这些表中插入了一些示例记录。我需要显示驾驶员的姓名,然后显示最长行程的行程腿数,这也意味着如果行程中行程腿最多,则这是最长的行程,此处的行程腿表示零件旅行。因此,这是我的函数,用于返回一个字符串,其中包含驾驶员和最长行程的行程腿编号。

CREATE OR REPLACE FUNCTION LONGTRIP(DLNUM driver.L#%type) 

RETURN VARCHAR2 IS



mostrip NUMBER;

driveName VARCHAR(100);

FinalANS VARCHAR(100);



BEGIN

SELECT *

INTO mostrip

FROM (SELECT COUNT(leg#) 

     FROM TRIP

      INNER JOIN TRIPLEG USING(T#)

      WHERE L# = DLNUM

      GROUP by T#

      ORDER by COUNT(leg#) desc) T

WHERE ROWNUM = 1 ;



select name into driveName

FROM TRKEMPLOYEE,DRIVER

WHERE TRKEMPLOYEE.E# =DRIVER.E#

AND DRIVER.L# = DLNUM;





FinalANS := driveName  || ' '|| nvl(mostrip, 0); 



RETURN FinalANS;



END LONGTRIP;

/

show error;



SELECT LONGTRIP(L#) FROM DRIVER;

因此,在执行选择查询“ SELECT LONGTRIP(L#)FROM DRIVER;”之后下面的输出显示了Adam和Frederic之间的空字符串,但这是不可能的,因为即使该驱动程序没有进行任何操作,我的字符串也应该为该行返回一个名称,后跟一个0。

   LONGTRIP(L#)
    ------------------------------------------------------------------------------------------------------------------------------------
    John Smith 5
    John Doe 5
    Adam Taylor 8

    Frederic Jones 5
    Adam Fox 4
    John Lucas 5

    7 rows selected.

0 个答案:

没有答案