sqlcl 与 sqlplus pl/sql 兼容性
sqlcl vs sqlplus pl/sql compatability
对于这个超轻量级的问题,我预先表示歉意,但在开始使用 sqlcl 作为 sqlplus 的潜在替代品时,我遗漏了一些东西。
sqlcl 很有说服力,但我很困扰,因为我不知道如何 运行 以交互方式进行匿名块。下面的示例在通过 @Little-Anonymous-Block.sql 在 sqlcl 中另存为 Little-Anonymous-Block.sql 和 运行 时工作正常,但原始 pl/sql 失败并显示以下内容PLS-00103.
小匿名-Block.sql:
BEGIN
DBMS_OUTPUT.PUT_LINE('This anonymous-block ran in sqlcl!');
END;
/
运行 作为脚本:
SQL> SET SERVEROUTPUT ON;
SQL> @Little-Anonymous-Block.sql;
This anonymous-block ran in sqlcl!
PL/SQL procedure successfully completed.
但是 运行 宁特别:
SQL> BEGIN
2 DBMS_OUTPUT.PUT_LINE('This anonymous-block ran in sqlcl!');
3 END;
4 /
给出:
Error starting at line : 1 in command -
BEGIN
DBMS_OUTPUT.PUT_LINE('This anonymous-block ran in sqlcl!');
END;/
PLS-00103: Encountered the symbol "/" The symbol "/" was ignored.
sqlcl 似乎将“/”与块终止 END 连接起来;
相同的命令在 sqlplus 中工作正常。
你能告诉我,我如何在 sqlcl 中交互 运行 匿名块吗?我有 20160513 的早期采用者版本。java 8.0_77。对于这个问题,如果它在 sqlcl 手册中,我很抱歉,我在 oracle sqlcl-page.
上没有找到太多可以参考的地方
我发现您可以 运行 使用 exec
的匿名块,但这有其局限性(例如,所有代码都在一行上)。
据我所知,您发现的是一个错误。解决方法是用 .
结束你的块,然后用 /
执行缓冲区,如下所示:
这确实是一个错误。它应该在 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 作为 sqlplus 的潜在替代品时,我遗漏了一些东西。
sqlcl 很有说服力,但我很困扰,因为我不知道如何 运行 以交互方式进行匿名块。下面的示例在通过 @Little-Anonymous-Block.sql 在 sqlcl 中另存为 Little-Anonymous-Block.sql 和 运行 时工作正常,但原始 pl/sql 失败并显示以下内容PLS-00103.
小匿名-Block.sql:
BEGIN
DBMS_OUTPUT.PUT_LINE('This anonymous-block ran in sqlcl!');
END;
/
运行 作为脚本:
SQL> SET SERVEROUTPUT ON;
SQL> @Little-Anonymous-Block.sql;
This anonymous-block ran in sqlcl!
PL/SQL procedure successfully completed.
但是 运行 宁特别:
SQL> BEGIN
2 DBMS_OUTPUT.PUT_LINE('This anonymous-block ran in sqlcl!');
3 END;
4 /
给出:
Error starting at line : 1 in command -
BEGIN
DBMS_OUTPUT.PUT_LINE('This anonymous-block ran in sqlcl!');
END;/
PLS-00103: Encountered the symbol "/" The symbol "/" was ignored.
sqlcl 似乎将“/”与块终止 END 连接起来; 相同的命令在 sqlplus 中工作正常。
你能告诉我,我如何在 sqlcl 中交互 运行 匿名块吗?我有 20160513 的早期采用者版本。java 8.0_77。对于这个问题,如果它在 sqlcl 手册中,我很抱歉,我在 oracle sqlcl-page.
上没有找到太多可以参考的地方我发现您可以 运行 使用 exec
的匿名块,但这有其局限性(例如,所有代码都在一行上)。
据我所知,您发现的是一个错误。解决方法是用 .
结束你的块,然后用 /
执行缓冲区,如下所示:
这确实是一个错误。它应该在 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☘ >