как использовать переменную в сценарии оракула для имени таблицы

Это сработало для меня в Windows XP за корпоративным брандмауэром.

Мне не нужно было устанавливать какой-либо локальный прокси или любое другое программное обеспечение, кроме git v1.771 из http://code.google.com/p/msysgit/downloads/list?can=3

$ git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
$ git config --system http.sslcainfo /bin/curl-ca-bundle.crt
$ git remote add origin https://mygithubuser:mygithubpwd@github.com/repoUser/repoName.git
$ git push origin master

proxyuser = прокси-пользователь, которого я назначил нашим ИТ-отделом, в моем случае это тот же пользователь Windows, которого я использую для входа на свой ПК, пользователь Active Directory

proxypwd = пароль моего прокси-пользователя

proxy.server.com:8080 = имя и порт прокси, я получил его из панели управления , Свойства обозревателя, Соединения, Кнопка «Настройки локальной сети», Кнопка «Дополнительно» в разделе «Прокси-сервер», используйте имя сервера и порт в первой строке (http).

mygithubuser = пользователь, которого я использую для входа на github.com

mygithubpwd = пароль для моего пользователя github.com

repoUser = пользователь-владелец репо

repoName = имя репо

15
задан Gern Blanston 24 July 2009 в 19:24
поделиться

4 ответа

Если вы запускаете этот сценарий из sqlplus (что, похоже, так), вы хотите использовать команду DEFINE, которая позволяет вам создавать переменные подстановки sqlplus, которые представляют собой простую подстановку строк, например:

define tableNm = 'customers2008'
select * from &tableNm;

См. Использование Sql * Plus для получения дополнительной информации о том, как они используются. Вы можете передавать значения в ваш сценарий из командной строки, используя предопределенные переменные позиционного подстановки, например:

define tableNm = &1
select * from &tableNm;

... а затем вызывать sqlplus следующим образом:

sqlplus user/pwd@server @myscript.sql customers2008

Если вы не передаете значение в командной строке , вызывающему скрипту будет предложено ввести значение.

См. ответ Дейва Коста ниже, чтобы узнать о различиях между переменными связывания и подстановки.

15
ответ дан 1 December 2019 в 01:23
поделиться

Чтобы попытаться добавить некоторые пояснения:

Метод, который вы пытались использовать, называется переменной связывания . В Oracle SQL переменная связывания обозначается двоеточием, за которым следует идентификатор. Назначение переменной связывания состоит в том, что ее значение не нужно знать при синтаксическом анализе оператора SQL; оператор может быть проанализирован один раз, а затем выполнен несколько раз с разными значениями, привязанными к переменной.

Для того, чтобы оператор SQL был проанализирован, имена таблиц и столбцов должны быть известны. Таким образом, имя таблицы не может быть представлено переменной связывания, потому что значение не будет известно во время синтаксического анализа.

Если вы просто выполняете SQL и встраиваете PL / SQl через SQLPlus, то подстановочные переменные - простой способ займитесь этой проблемой, как объяснил Стив.

8
ответ дан 1 December 2019 в 01:23
поделиться

Переменные подстановки работают:

SQL> select * from &table_name;
Enter value for table_name: dual
old   1: select * from &table_name
new   1: select * from dual

D
-
X
6
ответ дан 1 December 2019 в 01:23
поделиться

You have to do something like this:

EXECUTE IMMEDIATE 'select * from' || tableNm;

This is because Oracle does not allow bind variables for table (or any other object names).

There are significant security implications with the EXECUTE IMMEDIATE approach: when the tableNm value is user-supplied, you are wide open to SQL injection attacks.

7
ответ дан 1 December 2019 в 01:23
поделиться
Другие вопросы по тегам:

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