函数if,else“如果平均总价高于游戏价格返回0,else返回1”

yruzcnhs  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(370)
CREATE OR REPLACE FUNCTION f_unkcija(naziv_igrice IN VARCHAR)
    RETURN NUMBER IS
        rezultat1 NUMBER(1);
        rezultat2 NUMBER(1);
BEGIN
    SELECT AVG(igrice.cijena_ukupno) INTO rezultat1
    FROM igrice;

    SELECT cijena_ukupno INTO rezultat2
    FROM igrice
    IF rezultat1 > rezultat2 THEN
        RETURN 0;
    ELSE
        RETURN 1;
    END IF;
END;

我一直试图解决这个问题,但没有成功,出现了错误:
9/5 pl/sql:忽略sql语句
11/8 pl/sql:ora-00933:sql命令未正确结束
13/5 pls-00103:遇到符号“else”时,要求出现以下情况之一:(begin case declare end exception exit for goto if loop mod null pragma raise return select update while with<<continue close current delete fetch lock insert open rollback savepoint set sql execute commit for all merge pipe purge
16/1 pls-00103:遇到符号“结束”

bvhaajcl

bvhaajcl1#

您应该更改第二个select查询,因为它将返回多行,并且您将收到一条错误消息。您可以使用光标进行比较。试试下面。

CREATE OR REPLACE FUNCTION F_UNKCIJA (NAZIV_IGRICE IN VARCHAR)
   RETURN NUMBER
IS
   REZULTAT1   NUMBER (1);

   --  rezultat2   NUMBER (1);

   CURSOR CURR
   IS
      SELECT CIJENA_UKUPNO FROM IGRICE;
BEGIN
   SELECT AVG (IGRICE.CIJENA_UKUPNO) INTO REZULTAT1 FROM IGRICE;

   FOR I IN CURR
   LOOP
      IF I.CIJENA_UKUPNO > REZULTAT2
      THEN
         RETURN 0;
      ELSE
         RETURN 1;
      END IF;
   END LOOP;
END;

相关问题