我编写了这段代码,但问题是我不能在那里使用ELSEIF
语句,我不知道为什么,Oracle Developer也不允许我执行它。
有人能帮我解决这个问题吗?
DECLARE
CURSOR p_cursor IS
SELECT PRODUCT_NAME, PRICE
FROM PRODUCT
ORDER BY PRICE ;
p_row p_cursor%ROWTYPE ;
p_name VARCHAR2(30) ;
p_price NUMBER ;
BEGIN
dbms_output.put_line(RPAD('Product Name', 25, ' ') || 'Price Status');
dbms_output.put_line(RPAD('-', 24, '-') || RPAD(' -', 14, '-'));
FOR p_row IN p_cursor
LOOP
p_name := p_row.PRODUCT_NAME;
p_price := p_row.PRICE ;
IF p_price < 5 THEN
dbms_output.put_line(RPAD(p_name, 25, ' ') || ' Low');
END IF;
IF p_price > 5 AND p_price < 20 THEN
dbms_output.put_line(RPAD(p_name, 25, ' ') || ' Medium');
END IF;
IF p_price > 20 THEN
dbms_output.put_line(RPAD(p_name, 25, ' ') || ' High');
END IF;
END LOOP;
END;
我希望有这样的东西
IF p_price < 5 THEN
dbms_output.put_line(RPAD(p_name, 25, ' ') || ' Low');
ELSEIF p_price > 5 AND p_price < 20 THEN
dbms_output.put_line(RPAD(p_name, 25, ' ') || ' Medium');
ELSE
dbms_output.put_line(RPAD(p_name, 25, ' ') || ' High');
END IF;
答案 0 :(得分:4)
您的语法错误 - 在pl / SQL中它不是ELSEIF
,而是ELSIF
,没有第二个E:
IF p_price < 5 THEN
dbms_output.put_line(RPAD(p_name, 25, ' ') || ' Low');
ELSIF p_price > 5 AND p_price < 20 THEN
dbms_output.put_line(RPAD(p_name, 25, ' ') || ' Medium');
ELSE
dbms_output.put_line(RPAD(p_name, 25, ' ') || ' High');
END IF;
答案 1 :(得分:1)
您需要使用ELSIF
,而不是ELSEIF
。
例如:
vcValue VARCHAR2(10) := 'ABC';
IF vcValue = 'ABC' THEN
-- vcValue = 'ABC';
ELSIF vcValue = 'DEF' THEN
-- vcValue = 'DEF';
ELSE
-- vcValue is not 'ABC' or 'DEF';
END IF;
以下是关于IF,ELSIF,ELSE声明的文档链接:Link