我有一个 PL/SQL 脚本,我正尝试使用 SQLPLUS 从命令 shell 运行它。但是,每当我运行它时,我得到的只是一个数字和一个等待输入的光标。当我按下回车键时,它只会增加数字并重复该过程。这是一个执行相同操作的虚拟查询
set serveroutput on
DECLARE
cursor getServerTime IS
SELECT sysdate as t from dual;
myTime getServerTime%ROWTYPE;
BEGIN
open getServerTime;
FETCH getServerTime into myTime;
dbms_output.put_line(myTime.t);
close getServerTime;
END;
要从命令 shell 运行它,我使用:sqlplus me/myPass@myDB @"dummy.sql"
答案1
您需要在 END; 之后用第一列包含“/”的另一行来终止脚本,因此:
set serveroutput on
DECLARE
cursor getServerTime IS
SELECT sysdate as t from dual;
myTime getServerTime%ROWTYPE;
BEGIN
open getServerTime;
FETCH getServerTime into myTime;
dbms_output.put_line(myTime.t);
close getServerTime;
END;
/
通过 SQL 创建 PL/SQL 块时另外,“/”告诉 SQL加上运行自上次执行命令以来放入缓冲区的所有内容。您获得的递增数字是 SQL*Plus 为您提供脚本中的下一个行号 - 它正在等待您告诉它您已完成。