echo "select * from emp" > q.sql
sqlq q.sql > emp.txt
grep -v
(или сделать его необязательным). например sqlq() {
local filter
filter='cat'
# very primitive, use getopts for real option handling.
if [ "$1" == "--delete-blank-lines" ] ; then
filter='grep -v "^$"'
shift
fi
# each arg is piped into sqlplus as a separate command
printf "%s\n" "$@" | sqlplus -S sss/eee@sid | $filter
}
sqlq --delete-blank-lines 'select * from emp' > emp.txt
# two sql commands:
sqlq 'select * from emp;' 'select * from foo' > empfoo.txt
# that last example works just as well as:
sqlq 'select * from emp; select * from foo' > empfoo.txt
Возможны многие улучшения - например, другие полезные параметры в функции включают:
printf
, если он обнаруживает, что он передается по конвейеру sqlplus
.