Что касается сценария SQL - PullRequest
0 голосов
/ 19 июля 2010

У меня есть строка ниже в сценарии .sql. Не уверен, что он делает. Ожидает ли он ввода от пользователя dbuserid и пароля или он принимает значения из окружения? Что означает &&? В файле test.sql перед созданием таблиц я вижу следующую строку:

CONNECT &&usr/&&pass@&&dbname

Ответы [ 2 ]

1 голос
/ 19 июля 2010

В этом скрипте sql вы объявляете usr, pass и dbname переменными подстановки.Начиная с OTN :

И одиночный амперсанд (&), и двойной амперсанд (&&) могут ставить префикс имени замены в выражении.SQL Plus предварительно обрабатывает оператор и подставляет значение переменной.Заявление затем выполняется.Если переменная не была ранее определена, то SQL Plus запрашивает у вас значение перед выполнением подстановки.

Если для неопределенной переменной используется один префикс амперсанда, значение, введенное вами в приглашении, несохраняются.Сразу после замены значения в операторе значение отбрасывается, а переменная остается неопределенной.Если на переменную ссылаются дважды, даже в одной и той же команде, вам будет предложено дважды.В каждом приглашении можно вводить разные значения.

Если двойная ссылка с амперсандом заставляет SQL Plus запросить у вас значение, то SQL Plus определяет переменную в качестве этого значения.Любая последующая ссылка на переменную (даже в той же команде) с использованием «&» или «&&» заменяет вновь определенное значение.SQL * Plus больше не будет запрашивать вас.

А вот больше о переменных подстановки SQL * Plus .

0 голосов
/ 19 июля 2010

'&' используется для обозначения переменных замещения в SQL Plus.Эти переменные могут быть установлены с помощью ключевого слова DEFINE.В качестве альтернативы, если это значение не указано с помощью этого ключевого слова, SQL Plus будет запрашивать у вас значение переменной и продолжать запрашивать вас каждый раз, когда он видит &variable

.Плюс повторно использовать первое определенное значение переменной.Например, если вам будет предложено ввести значение usr на основе вашего фрагмента кода подключения, все последующие вхождения &&usr будут заменены этим значением.В этом случае SQL Plus предложит вам только один раз ввести значение usr.

РЕДАКТИРОВАТЬ:
Да, вы можете передать параметры из скрипта,Пример:

$ cat a.sh
#!/bin/bash

# Ideally, you would retrieve the password from a secure
# location like a password safe/vault etc. Never hardcode
# the connection credentials
USER=scott
PASS=tiger
INST=orcl

sqlplus -s /nolog << EOF >> some_log_file.log
connect ${USER}/${PASS}@${INST}
set serveroutput on
select user from dual;
EOF

$ ./a.sh

$ cat some_log_file.log

USER
------------------------------
SCOTT

$ 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...