Oracle sqlcl与sqlplus pl/sql的兼容性
对于这个超轻量的问题,我很抱歉,但是当我开始使用sqlcl作为sqlplus的潜在替代品时,我遗漏了一些东西 sqlcl很有吸引力,但我很困扰,因为我不知道如何以交互方式运行匿名块。当保存为Little-Anonymous-Block.sql并通过@Little-Anonymous-Block.sql在sqlcl中运行时,下面的示例可以正常工作,但原始pl/sql在以下PLS-00103中失败 Little-Anonymous-Block.sql:Oracle sqlcl与sqlplus pl/sql的兼容性,oracle,sqlplus,sqlcl,Oracle,Sqlplus,Sqlcl,对于这个超轻量的问题,我很抱歉,但是当我开始使用sqlcl作为sqlplus的潜在替代品时,我遗漏了一些东西 sqlcl很有吸引力,但我很困扰,因为我不知道如何以交互方式运行匿名块。当保存为Little-Anonymous-Block.sql并通过@Little-Anonymous-Block.sql在sqlcl中运行时,下面的示例可以正常工作,但原始pl/sql在以下PLS-00103中失败 Little-Anonymous-Block.sql: BEGIN DBMS_OUTPUT.PUT
BEGIN
DBMS_OUTPUT.PUT_LINE('This anonymous-block ran in sqlcl!');
END;
/
作为脚本运行:
SQL>打开服务器输出
SQL>@Little-Anonymous-Block.SQL
这个匿名块在sqlcl中运行
PL/SQL过程已成功完成
但是,临时运行:
SQL>开始
2 DBMS_OUTPUT.PUT_LINE('这个匿名块在sqlcl中运行!')
3结束
四,/
给出:
从命令中的第1行开始时出错-
开始
DBMS_OUTPUT.PUT_LINE('这个匿名块在sqlcl中运行!')
结束/
PLS-00103:遇到符号“/”符号“/”被忽略
sqlcl似乎将“/”与块终止端连接在一起;
同样的命令在sqlplus中也可以正常工作
你能告诉我,我如何在sqlcl中以交互方式运行匿名块吗?我从20160513获得了早期采用者版本。java 8.0_77。抱歉,如果在sqlcl手册中有此问题,我在oracle上没有找到太多可参考的内容。我发现您可以使用
exec
运行匿名块,但这有其局限性(例如,所有代码都在一行上)。
据我所知,你发现的是一只虫子。解决方法是使用
结束块,然后使用/
执行缓冲区,如下所示:
我发现可以使用
exec
运行匿名块,但这有其局限性(例如,所有代码都在一行上)。
据我所知,你发现的是一只虫子。解决方法是使用
结束块,然后使用/
执行缓冲区,如下所示:
这确实是一个bug。它应该在OTN的最新版本中修复
BARRY@orcl☘ >BEGIN
2 DBMS_OUTPUT.PUT_LINE('This anonymous-block ran in sqlcl!');
3 END;
4 /
PL/SQL procedure successfully completed.
BARRY@orcl☘ >l
1 BEGIN
2 DBMS_OUTPUT.PUT_LINE('This anonymous-block ran in sqlcl!');
3* END;
BARRY@orcl☘ >
这确实是一个错误。它应该在OTN的最新版本中修复
BARRY@orcl☘ >BEGIN
2 DBMS_OUTPUT.PUT_LINE('This anonymous-block ran in sqlcl!');
3 END;
4 /
PL/SQL procedure successfully completed.
BARRY@orcl☘ >l
1 BEGIN
2 DBMS_OUTPUT.PUT_LINE('This anonymous-block ran in sqlcl!');
3* END;
BARRY@orcl☘ >
当然,如果删除
/
,它将在sqlcl中执行annonymous块。此外,如果输入show all
,您应该会看到SQL*Plus模式处于关闭状态
。我怀疑如果你打开它,你应该会得到你习惯的行为。谢谢@PatrickBacon关于SQL*Plus模式的介绍。我会带着它跑的。但是,删除终止符不会得到要执行的非块。sqlcl不会检测到块结束(行为非常类似于SQL*Plus)。有什么想法吗?有好的sqlcl文档吗?“HELP/”没有太多内容。当然,如果删除/
,它将在sqlcl中执行注释性块。此外,如果输入show all
,您应该会看到SQL*Plus模式处于关闭状态
。我怀疑如果你打开它,你应该会得到你习惯的行为。谢谢@PatrickBacon关于SQL*Plus模式的介绍。我会带着它跑的。但是,删除终止符不会得到要执行的非块。sqlcl不会检测到块结束(行为非常类似于SQL*Plus)。有什么想法吗?有好的sqlcl文档吗?“HELP/”没有太多内容。好吧,错误发生了。我会调查它是否已经提交给甲骨文。同时,这种变通方法是可以接受的。谢谢你看。我会接受的。很高兴我能帮忙。好吧,虫子会发生的。我会调查它是否已经提交给甲骨文。同时,这种变通方法是可以接受的。谢谢你看。我会接受的。很高兴我能帮忙。