#shell #sqlplus
Вопрос:
Это правильный способ получения идентификатора запроса в скрипте оболочки
v_request_id=`sqlplus -s /nolog <<END
connect $FCP_LOGIN
set echo off
set head off
set verify off
set feedback off
set trimspool on
SELECT FND_GLOBAL.CONC_REQUEST_ID
FROM DUAL
END`
Ответ №1:
Не совсем. 1.) поставьте точку с запятой после двойного
2.) зачем использовать старые уродливые задние палочки?
3.) сделайте его более компактным: поместите все установленные параметры в одну строку: УСТАНОВИТЕ echo off head off питание выключено проверка выключена trimspool включена
4.) Зачем разбивать ВЫДЕЛЕНИЕ на несколько строк?
5.) В результате вы получите более одной строки, потому что sqlplus всегда создает пустую строку заголовка, поэтому вам нужно избавиться от нее. Может быть, используя хвост -1
6.) Если ваш результат числовой, вас ждет сюрприз: sqlplus заполнит его пробелами. Лучший способ: преобразуйте его в строку с помощью TO_CHAR
Так что результат может быть вот таким:
v_request_id=$(sqlplus -s /nolog <<END | tail -1
connect $FCP_LOGIN
set echo off head off verify off feedback off trimspool on
SELECT TO_CHAR(FND_GLOBAL.CONC_REQUEST_ID) FROM DUAL;
END)