Похоже, вы ошиблись с расширением переменной sqlplus. Вы должны использовать &
, а не $
.
Однако вы можете вообще избежать переменной sql, напрямую используя только переменные оболочки:
count=$(sqlplus -s ${DBA_ORACLE_USER}/${DBA_ORACLE_PWORD}@${ORACLE_SID} <<END
#connect ${DBA_ORACLE_USER}/${DBA_ORACLE_PWORD}@${ORACLE_SID}
set serveroutput on
set linesize 1000
set heading off
set feedback off
SELECT count(1)
FROM MYTABLE
WHERE partition_date between '01-$retMonth-$retPrvYear' and '$retLastDay-$retMonth-$retPrvYear'
);
END
)
Обратите внимание, что вы могли отладить эту проблему самостоятельно, используя cat
вместо sqlplus
просто для печати расширенный код sql:
echo $(cat <<END
...
END
)