当有换行符时,为什么我的PL / SQL过程无法编译?

时间:2014-11-20 18:23:02

标签: oracle plsql toad

下面是我尝试编译的存储过程的一些逻辑。当没有换行符时,它编译得很好。但是,当我分手时,它不会编译。那是为什么?

正常工作时的代码:

DECLARE
curr_fy varchar2(4);
last_fy varchar2(4);
get_month number;
BEGIN
get_month := to_number(to_char(sysdate, 'MM'));
If get_month < 6 then
curr_fy := to_char(sysdate, 'YYYY');
last_fy := to_char(sysdate, 'YYYY') - 1;
END IF;
If get_month > 5 then
curr_fy := to_char(sysdate, 'YYYY') + 1;
last_fy := to_char(sysdate, 'YYYY');
END IF;
dbms_output.put_line(curr_fy);
END;

代码不能正常工作时:

DECLARE

curr_fy varchar2(4);
last_fy varchar2(4);
get_month number;

BEGIN

get_month := to_number(to_char(sysdate, 'MM'));

If get_month < 6 then
curr_fy := to_char(sysdate, 'YYYY');
last_fy := to_char(sysdate, 'YYYY') - 1;
END IF;

If get_month > 5 then
curr_fy := to_char(sysdate, 'YYYY') + 1;
last_fy := to_char(sysdate, 'YYYY');
END IF;

dbms_output.put_line(curr_fy);

END;

当我编译代码的第二个版本时,我收到以下错误消息:ORA-00900:无效的SQL语句

我使用的是最新版本的TOAD。

1 个答案:

答案 0 :(得分:2)

我没有使用过TOAD,但我的猜测是TOAD将每一行后面跟一个空行作为单独的SQL语句。所以在你的情况下,TOAD可能会尝试将DECLARE作为不正确的SQL语句执行。

我的建议是使用鼠标光标选择/突出显示整个匿名块,然后单击执行按钮。这通常适用于SQL Developer等免费工具。