从unix shell脚本调用sql时出错

从unix shell脚本调用sql时出错,unix,oracle11g,Unix,Oracle11g,我有一个在unix上运行的shell脚本。像这样: $ORACLE_HOME/bin/sqlplus -s '/ as sysdba' <<EOF set head on; set feed on; set serveroutput on; set linesize 250; set pagesize 1000; column STATUS new_value VAR_STATUS ; column JOB_NAME new_value VAR_JOB_NAME ; BEGI

我有一个在unix上运行的shell脚本。像这样:

$ORACLE_HOME/bin/sqlplus -s '/ as sysdba' <<EOF
set head on; 
set feed on;
set serveroutput on;
set linesize 250;   
set pagesize 1000;
column STATUS new_value VAR_STATUS ;
column JOB_NAME new_value VAR_JOB_NAME ;
BEGIN
SELECT JOB_NAME, STATUS
FROM DBA_SCHEDULER_JOB_RUN_DETAILS WHERE JOB_NAME = 'SOME_JOB' AND ACTUAL_START_DATE IN (SELECT MAX(ACTUAL_START_DATE) FROM DBA_SCHEDULER_JOB_RUN_DETAILS);

END;

/
exit
EOF

我做错了什么?

每当我做这样的事情时,我不使用BEGIN和END语句。将重定向的输入想象成与从键盘键入的输入完全相同。

使用begin和end时,Oracle将视为匿名过程,并期望变量声明和into子句将值分配到变量中

删除开始和结束,然后重试。
如果希望开始-结束,则声明相应数据类型的变量并重试。

可以尝试的一件事是用
cat
命令替换sqlplus的调用。将输出重定向到一个文件,并查看结果,看看输出是否不是您所期望的。谢谢。但是这种语法有什么错呢?
ERROR at line 2:
ORA-06550: line 2, column 1:
PLS-00428: an INTO clause is expected in this SELECT statement