带有ora-01744的PL/SQL oracle函数

带有ora-01744的PL/SQL oracle函数,sql,oracle,plsql,Sql,Oracle,Plsql,我在myqsl中有一组编写oracle版本所需的函数 在我面临极限1问题之前,一切都很顺利。我认为我对限额的查询是个问题,但无法找出问题所在。你能帮我一下吗 MySQL版本 导致问题的Oracle版本 SELECT Q1.* FROM ( SELECT ROWNUM AS RWNR2, Q2.* FROM ( SELECT (NAME || ' ' || SURNAME) INTO info FROM TB_CUSTO

我在myqsl中有一组编写oracle版本所需的函数

在我面临极限1问题之前,一切都很顺利。我认为我对限额的查询是个问题,但无法找出问题所在。你能帮我一下吗

MySQL版本

导致问题的Oracle版本

SELECT Q1.* 
FROM (
    SELECT ROWNUM AS RWNR2, Q2.* 
    FROM (
        SELECT (NAME || ' ' || SURNAME) 
           INTO info 
        FROM TB_CUSTOMER 
        WHERE FLAT_ID = flatId AND TYPE = typeId 
        ORDER BY OWN_DATE DESC
    ) Q2 
    WHERE ROWNUM <= 1 
 ) Q1 
 WHERE Q1.RWNR2 >  0;

顺便说一句,我知道表名和字段是不同的,在这个预览中值是正确的。

INTO子句必须在最外层,而不是最内层。您不需要两级嵌套,一个派生表和一个rownumINTO子句必须位于最外层,而不是最内层。你不需要两个层次的嵌套,一个派生表和一个rownum是的,我编辑了那个部分,是的,我编辑了那个部分,好的,这似乎是可行的。我明白这一点。但是,对于“未找到行”错误,我能做些什么吗?@FreshPro:您需要在代码中正确捕获“未找到数据”异常并进行处理。或者创建一个总是返回某些内容的SQL语句。哦,谢谢你的提示。我将返回一个空字符串以获取信息。好吧,这似乎管用。我明白这一点。但是,对于“未找到行”错误,我能做些什么吗?@FreshPro:您需要在代码中正确捕获“未找到数据”异常并进行处理。或者创建一个总是返回某些内容的SQL语句。哦,谢谢你的提示。我将返回一个空字符串以获取信息。干杯
SELECT Q1.* 
FROM (
    SELECT ROWNUM AS RWNR2, Q2.* 
    FROM (
        SELECT (NAME || ' ' || SURNAME) 
           INTO info 
        FROM TB_CUSTOMER 
        WHERE FLAT_ID = flatId AND TYPE = typeId 
        ORDER BY OWN_DATE DESC
    ) Q2 
    WHERE ROWNUM <= 1 
 ) Q1 
 WHERE Q1.RWNR2 >  0;
SELECT full_name
  INTO info
FROM (
    SELECT (NAME || ' ' || SURNAME) as full_name
    FROM TB_CUSTOMER 
    WHERE FLAT_ID = flatId 
      AND TYPE = typeId 
    ORDER BY OWN_DATE DESC
) Q2 
WHERE ROWNUM <= 1;