Shell Script: войти в Oracle DB и получить данные в переменную

У меня есть этот сценарий оболочки, который входит в базу данных Oracle, выбирает из таблицы и помещает результат в другую переменную

Username=User1
Password=Pass1
eval DatabaseName=db_tst

var1 = 1

Result=`sqlplus -silent $Username/$Password@$DatabaseName <<EOF 
whenever sqlerror exit sql.sqlcode
SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF 
select to_char(RUN_DATE,'YYYY-MM-DD:hh24:mi:ss') from table1 where col1 = $var1;
EXIT;
EOF`

echo $Result

проблема в переменных, которые передается в «Результат» ($ Username, $ Password ... и т. д.), его значения не распознаются. он дал мне это сообщение:

ERROR: ORA-01017: invalid username/password; logon denied SP2-0306: Invalid option. Usage: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM}] [edition=value]] where <logon> ::= <username>[/<password>][@<connect_identifier>] <proxy> ::= <proxyuser>[<username>][/<password>][@<connect_identifier>] SP2-0306: Invalid option. Usage: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM}] [edition=value]] where <logon> ::= <username>[/<password>][@<connect_identifier>] <proxy> ::= <proxyuser>[<username>][/<password>][@<connect_identifier>] SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus

ОШИБКА: Ошибка команды SQL Plus.

И когда он записывает значения вручную, он входит в систему, и переменная Result получает необходимое значение. Однако я не хочу записывать значения вручную, их нужно передавать через переменные

0
12.10.2016, 12:33
1 ответ

попробуйте вот так ...

Result=`sqlplus -silent ${Username}/${Password}@$DatabaseName <<EOF 
whenever sqlerror exit sql.sqlcode
SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF 
select to_char(RUN_DATE,'YYYY-MM-DD:hh24:mi:ss') from table1 where col1 = ${var1};
EXIT;
EOF`

Result=$(sqlplus -silent ${Username}/${Password}@$DatabaseName <<EOF 
whenever sqlerror exit sql.sqlcode
SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF 
select to_char(RUN_DATE,'YYYY-MM-DD:hh24:mi:ss') from table1 where col1 = ${var1};
EXIT;
EOF)
-2
28.01.2020, 05:06

Теги

Похожие вопросы