У меня есть скрипт Unix, подобный этому:
value1=`sqlplus -s ivr/ivr <<EOF
set heading off;
set feedback off;
set linesize 500;
set serveroutput on;
set wrap off;
SELECT FM.getSequence_n('$b_period', '$t_period', '$opr', '$fran', '$poi_s')
FROM DUAL;
exit;
EOF` ,
Параметры принимаются как входные данные от пользователя. Когда я запускаю сценарий в режиме отладки, используя 'ksh -x filename.sh', я замечаю, что когда сценарий unix передает значения оператору select, он разбивает его следующим образом:
SELECT FM.getSequence_n('
2010/12/01 - 2010/12/31','
2010/12/01 - 2010/12/31','TTSLAP','UWAP','TTSL-LOC')
FROM DUAL
... что дает неправильный вывод. Когда я запускаю ту же инструкцию sql с переданными значениями в sqlplus со всеми значениями в одной строке, я получаю правильный вывод.
Мне нужно знать, почему Unix разбивает оператор на несколько строк и как это можно удалить. Это дало мне кошмары. Сначала я думал, что значения не были переданы правильно, поэтому вывод был неправильным. Но только эта строка в Unix при передаче значений является причиной ошибки. Пожалуйста, помогите.