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中将空格删除全部重新打出即可编译通过。
关于Oracle if elsif else
标签:rac 时间 weight 解决方法 圆角 错误 proc log 编译错误
本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:http://www.cnblogs.com/wleyang/p/7447452.html