为什么控制语句在 Oracle Apex 中不起作用?

Why control statements is not working in Oracle Apex?

有什么方法可以让控制语句在 apex 中工作吗?

SET SERVEROUTPUT ON;
DECLARE 
    v_num NUMBER := 12;
    v_word VARCHAR := 'hello';
BEGIN
    IF v_num < 10 THEN
        DBMS.OUTPUT.PUT_LINE('IF condition executed.');
    ELSIF v_word = 'hello' THEN
        DBMS.OUTPUT.PUT_LINE('ELSIF condition executed.');
    ELSE v_word = 'world' THEN
        DBMS_OUTPUT.PUT_LINE('ELSE condition executed.')
    END IF;
    DBMS_OUTPUT.PUT_LINE('Outside the control statement.');   
END;

这是我每次使用控制语句时收到的错误:

您的代码有很多小问题。从尽可能小的部分开始,检查它是否有效,然后添加代码 - 开始使用任何语言编写代码的最佳方式。

问题 1: set serveroutput on 在 sql 研讨会中不需要。服务器输出默认启用,无法切换。试试下面的代码:

BEGIN
  dbms_output.put_line('hello');
END;

并观察它是否有效。 然后运行这段代码

set serveroutput on

并且...请注意,您遇到了与报告相同的错误!

问题 2: 拼写错误。下面的每个注释行都会导致错误

DECLARE 
    v_num NUMBER := 12;
    --for VARCHAR, you need to declare the precision
    --no error but datatype VARCHAR should NOT be used. Instead use VARCHAR2
    --v_word VARCHAR := 'hello';
    v_word VARCHAR2(100) := 'hello';
BEGIN
    IF v_num < 10 THEN
        -- typo: there is no "DBMS.OUTPUT"
        --DBMS.OUTPUT.PUT_LINE('IF condition executed.');
        DBMS_OUTPUT.PUT_LINE('IF condition executed.');
    ELSIF v_word = 'hello' THEN
        -- typo: there is no "DBMS.OUTPUT"
        --DBMS.OUTPUT.PUT_LINE('ELSIF condition executed.');
        DBMS_OUTPUT.PUT_LINE('ELSIF condition executed.');
    --No condition needed after the ELSE keyword.
    --ELSE v_word = 'world' THEN
    ELSE
        DBMS_OUTPUT.PUT_LINE('ELSE condition executed.');
    END IF;
    DBMS_OUTPUT.PUT_LINE('Outside the control statement.');   
END;