Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PL SQL中的If、ELSIF和ELSE条件不起作用_Sql_Oracle_Plsql - Fatal编程技术网

PL SQL中的If、ELSIF和ELSE条件不起作用

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命令(

当我运行代码时,它要求我输入两个输入,如F和100。 然后它只显示“PL/SQL过程成功完成”

看起来它从来没有运行过 DBMS_OUTPUT.PUT_LINE??怎么会??我是pl sql的新手,对于上面的任何新错误,我深表歉意


谢谢

请尝试在脚本开头添加
将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;

/