Oracle 否则,如果不在PL/SQL中工作
当我尝试在过程中使用Oracle 否则,如果不在PL/SQL中工作,oracle,plsql,Oracle,Plsql,当我尝试在过程中使用ELSE IF时,我遇到了一个奇怪的错误,我无法理解我做错了什么。我正在用蟾蜍创建程序 此代码适用于: CREATE OR REPLACE PROCEDURE findMin(valore1 in integer, valore2 in integer, risultato out integer) IS BEGIN IF(valore1 < valore2) THEN risultato:= valore1; ELSE
ELSE IF
时,我遇到了一个奇怪的错误,我无法理解我做错了什么。我正在用蟾蜍创建程序
此代码适用于:
CREATE OR REPLACE PROCEDURE findMin(valore1 in integer, valore2 in integer, risultato out integer) IS
BEGIN
IF(valore1 < valore2) THEN
risultato:= valore1;
ELSE
risultato:= valore2;
END IF;
END;
/
我的错误是什么
谢谢这是一个打字错误,如果为PLSQL,请将其替换为 埃尔西夫 引入一个布尔表达式,如果上述条件均未返回TRUE,则对该表达式求值
如果缩进
else
块,则可以看到缺少end If
:
BEGIN
IF(valore1 < valore2) THEN
risultato:= valore1;
ELSE
IF (valore1 > valore2) THEN
risultato:= valore2;
ELSE
risultato := 0;
END IF;
-- missing an END IF
END;
CREATE OR REPLACE PROCEDURE findMin(valore1 in integer, valore2 in integer,
risultato out integer) IS
BEGIN
IF valore1 < valore2 THEN
risultato:= valore1;
ELSIF valore1 > valore2 THEN
risultato:= valore2;
ELSE
risultato := 0;
END IF;
END;
/
Procedure FINDMIN compiled
您也可以在此处使用案例陈述:
CREATE OR REPLACE PROCEDURE findMin(valore1 in integer, valore2 in integer, risultato out integer) IS
BEGIN
CASE
WHEN valore1 < valore2 THEN
risultato:= valore1;
WHEN valore1 > valore2 THEN
risultato:= valore2;
ELSE
risultato := 0;
END CASE;
END;
/
Procedure FINDMIN compiled
创建或替换过程findMin(整数中的valore1,整数中的valore2,整数中的risultato out)是
开始
案例
当从价1<从价2时
risultato:=从价1;
当从价1>从价2时
risultato:=从价2;
其他的
risultato:=0;
终例;
结束;
/
已编译的程序FINDMIN
或者甚至只是一个case表达式,因为本例是一个简单的单赋值:
CREATE OR REPLACE PROCEDURE findMin(valore1 in integer, valore2 in integer,
risultato out integer) IS
BEGIN
risultato := CASE
WHEN valore1 < valore2 THEN valore1
WHEN valore1 > valore2 THEN valore2
ELSE 0
END;
END;
/
Procedure FINDMIN compiled
创建或替换过程findMin(整数中的valore1,整数中的valore2,
risultato out整数)是
开始
risultato:=案例
当从价1<从价2,则从价1
当从价1>从价2时,则从价2
其他0
结束;
结束;
/
已编译的程序FINDMIN
了解更多信息。谢谢。我以为“elseif”只是一个命令,实际上是两个。谢谢,我知道了。顺便说一下,PL/SQL在
if
表达式中不需要括号,因为它们以then
结尾(或end if
)。语言倾向于使用一种或另一种方法,但不能同时使用两种方法。
CREATE OR REPLACE PROCEDURE findMin(valore1 in integer, valore2 in integer,
risultato out integer) IS
BEGIN
IF valore1 < valore2 THEN
risultato:= valore1;
ELSIF valore1 > valore2 THEN
risultato:= valore2;
ELSE
risultato := 0;
END IF;
END;
/
Procedure FINDMIN compiled
CREATE OR REPLACE PROCEDURE findMin(valore1 in integer, valore2 in integer, risultato out integer) IS
BEGIN
CASE
WHEN valore1 < valore2 THEN
risultato:= valore1;
WHEN valore1 > valore2 THEN
risultato:= valore2;
ELSE
risultato := 0;
END CASE;
END;
/
Procedure FINDMIN compiled
CREATE OR REPLACE PROCEDURE findMin(valore1 in integer, valore2 in integer,
risultato out integer) IS
BEGIN
risultato := CASE
WHEN valore1 < valore2 THEN valore1
WHEN valore1 > valore2 THEN valore2
ELSE 0
END;
END;
/
Procedure FINDMIN compiled