为什么控制语句在 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;
有什么方法可以让控制语句在 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;