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中将空格删除全部重新打出即可编译通过。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值