欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

elif else if oracle_关于Oracle if elsif else

发布时间:2023/12/2 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 elif else if oracle_关于Oracle if elsif else 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

昨天被一同事问一问题,问题就是Oracle存储过程中的IF逻辑块

告诉他大概是这样:

create or replace procedure testIfElsif (numb number) IS

begin

if numb = 1 thenDBMS_OUTPUT.put_line(1);else if numb = 2 thenDBMS_OUTPUT.put_line(2);elseDBMS_OUTPUT.put_line(3);end if;end;

结果死活编译不过去,就又叫我帮他看,

编译报错:

PROCEDURE WAZTJD.TESTIFELSIF 编译错误

错误:PLS-00103: 出现符号 "TESTIFELSIF"在需要下列之一时:

if

行:11

文本:END testifelsif;

修改过程:

一、将else if 去掉就能够编译通过且可以运行调用,说明是else if的问题

二、将else if 改为elseif 结果字体颜色不变色,说明不是关键字,编译不通过

三、将代码最后改为如下

create or replace procedure testIfElsif (numb number) IS

begin

if numb = 1 thenDBMS_OUTPUT.put_line(1);else if numb = 2 thenDBMS_OUTPUT.put_line(2);elseDBMS_OUTPUT.put_line(3);end if;end if;end;

编译通过;

四、最后感觉还是有问题就在网上搜,终于真相大白是elsif,不是else if 也不是 elseif,更不是第三步的解决方法

最终代码:

CREATE OR REPLACE PROCEDURE testifelsif(numb in number) AS

BEGIN

if numb = '1' thenDBMS_OUTPUT.put_line('1');

elsif numb= '2' thenDBMS_OUTPUT.put_line('2');elseDBMS_OUTPUT.put_line('3');end if;END testifelsif;

这是个坑,浪费时间、精力,希望在坑里的同学能够赶紧爬出来!

另:

在写博过程中,有一段测试代码是在博客中写的,粘到pl/sql中没能编译通过,

最终原因是因为博客中的空格默认为圆角空格导致的编译不通过,在pl/sql中将空格删除全部重新打出即可编译通过。

总结

以上是生活随笔为你收集整理的elif else if oracle_关于Oracle if elsif else的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。