简体   繁体   English

我不断收到错误ORA-01422,ORA-06512

[英]I keep getting error ORA-01422, ORA-06512

I keep getting error ORA-01422: exact fetch returns more than requested number of rows. 我不断收到错误ORA-01422:确切的提取返回的数据超过了请求的行数。 ORA-06512: at "CM420A07.ZIP_CODE_SALES_WINNER", line 6. I cannot figure out exactly what is going wrong. ORA-06512:在“ CM420A07.ZIP_CODE_SALES_WINNER”的第6行。我无法弄清楚到底出了什么问题。

CREATE OR REPLACE FUNCTION ZIP_CODE_SALES_WINNER
  RETURN VARCHAR
IS
  zipWinner VARCHAR2(5);
BEGIN
  SELECT C.zip_code INTO zipWinner
  FROM SALE S JOIN CUSTOMER C
  ON S.cust_ID = C.cust_ID
  GROUP BY C.zip_code
  HAVING COUNT(*) = (
  SELECT MAX(COUNT(*))
  FROM SALE S JOIN CUSTOMER C
  ON S.cust_ID = C.cust_ID
  GROUP BY C.zip_code);  
  RETURN zipWinner;
END;
/
SELECT ZIP_CODE_SALES_WINNER FROM DUAL;

Your query returns more than one value. 您的查询返回多个值。

If you do not care which zipcode will be selected if there is more than one just add rownum=1 to the query to get exactly one row: 如果您不关心如果有多个邮政编码,将选择哪个邮政编码,只需在查询中添加rownum = 1即可获得一行:

SELECT zip_code INTO zipWinner FROM (
SELECT C.zip_code 
  FROM SALE S JOIN CUSTOMER C
  ON S.cust_ID = C.cust_ID
  GROUP BY C.zip_code
  HAVING COUNT(*) = (
  SELECT MAX(COUNT(*))
  FROM SALE S JOIN CUSTOMER C
  ON S.cust_ID = C.cust_ID
  GROUP BY C.zip_code))
  WHERE  rownum =1;  

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM