PL SQL中的If、ELSIF和ELSE条件不起作用
当我运行代码时,它要求我输入两个输入,如F和100。 然后它只显示“PL/SQL过程成功完成” 看起来它从来没有运行过 DBMS_OUTPUT.PUT_LINE??怎么会??我是pl sql的新手,对于上面的任何新错误,我深表歉意PL SQL中的If、ELSIF和ELSE条件不起作用,sql,oracle,plsql,Sql,Oracle,Plsql,当我运行代码时,它要求我输入两个输入,如F和100。 然后它只显示“PL/SQL过程成功完成” 看起来它从来没有运行过 DBMS_OUTPUT.PUT_LINE??怎么会??我是pl sql的新手,对于上面的任何新错误,我深表歉意 谢谢请尝试在脚本开头添加将SERVEROUTPUT设置为ON。DBMS\u OUTPUT只将输出放在输出缓冲区,而不是屏幕上。要在屏幕上查看内容,还必须发出命令setserveroutput-on。在ACCEPT语句之前执行此操作。分号不是必需的SET是一个UI命令(
谢谢请尝试在脚本开头添加
将SERVEROUTPUT设置为ON
。DBMS\u OUTPUT
只将输出放在输出缓冲区,而不是屏幕上。要在屏幕上查看内容,还必须发出命令setserveroutput-on
。在ACCEPT
语句之前执行此操作。分号不是必需的SET
是一个UI命令(SQL*Plus),它不需要分号来显示它的结束位置。@mathguy:我确实很好奇。但后来我把它放进了盒子里,我相信它也没有害处。还是这样?无论如何,我会删除它。它不会有任何伤害-SQL*Plus会忽略它,SQL Developer中的仿真器也会忽略它。不过,我不知道还有其他应用程序使用或模拟SQL*Plus。对于初学者(比如我们的OP),最好尽可能多地区分SQL(数据库服务器语言)、PL/SQL(过程编程语言)和接口使用的脚本语言。后者既不需要分号也不需要斜杠,而且它们执行时既不需要分号也不需要斜杠,这表明UI命令既不是SQL也不是PL/SQL。@Kurai-这是另一个问题,您应该启动一个新线程。无论如何,错误在代码中,而不是在数学中。您正在提示输入一个变量temp
,但随后在块中使用&input
。将其更改为&temp
,它应该可以工作。此外,您不应该在它周围使用单引号,因为它是一个数字,而不是字符串。
ACCEPT scale PROMPT 'Enter your input scale (C or F) for temperature: ';
ACCEPT temp PROMPT 'Enter your temperature value to be converted: ';
DECLARE
v_scale CHAR(1) := UPPER('&scale');
v_temp NUMBER := '&input';
BEGIN
IF (v_scale) = ('F') THEN
v_temp := (v_temp - 32) * 5/9;
DBMS_OUTPUT.PUT_LINE ('You converted temperature in C is exactly ' || TO_CHAR(v_temp));
ELSIF (v_scale) = ('C') THEN
v_temp := (v_temp * 9/5) + 32;
DBMS_OUTPUT.PUT_LINE ('You converted temperature in F is exactly ' || TO_CHAR(v_temp));
ELSE
DBMS_OUTPUT.PUT_LINE ('This is NOT a valid scale. Must be C or F.');
END IF;
END;
/