SQL Plus изменить текущий каталог - PullRequest
14 голосов
/ 04 февраля 2009

Как изменить текущий каталог в SQL Plus под Windows.

Я пытаюсь написать скрипт с несколькими командами "@ filename".

Я знаю, что можно открыть скрипт командой File -> Open, который изменит текущий каталог, но я ищу способ сделать это автоматически без присмотра.


Разрешение

Основываясь на ответе Plasmer, я установил переменную среды SQLPATH в Windows и получил кое-что, что мне достаточно. Я не пытался установить его с помощью команды HOST (сомневаюсь, что это сработает).

Ответ Pourquoi Litytestdata хороший, но он не сработает для меня (каталоги находятся слишком далеко друг от друга). И, конечно же, ответ Гая о том, что это невозможно, также верен. Я проголосую за этих двоих и приму ответ Пласмера.

Ответы [ 9 ]

20 голосов
/ 15 апреля 2010

Вот что я делаю.

Определите переменную, которая вам поможет:

define dir=C:\MySYSTEM\PTR190\Tests\Test1

@&dir\myTest1.sql

Вы не можете cd в SQL * Plus (вы можете cd использовать команду host, но, поскольку это дочерний процесс, настройка не будет сохраняться в вашем родительском процессе).

10 голосов
/ 04 февраля 2009

Я не думаю, что вы можете изменить каталог в SQL * Plus.

Вместо изменения каталога вы можете использовать @@filename, который читает в другом скрипте, местоположение которого относительно каталога, в котором выполняется текущий скрипт. Например, если у вас есть два скрипта

C:\Foo\Bar\script1.sql
C:\Foo\Bar\Baz\script2.sql

затем script1.sql может запустить script2.sql, если содержит строку

@@Baz\script2.sql

См. this для получения дополнительной информации о @@.

8 голосов
/ 04 февраля 2009

Не могли бы вы использовать переменную среды SQLPATH, чтобы сообщить sqlplus, где искать скрипты, которые вы пытаетесь запустить? Я считаю, что вы можете использовать HOST для установки SQLPATH в сценарии тоже.

Потенциально могут возникнуть проблемы, если два сценария имеют одинаковое имя и оба каталога находятся в SQLPATH.

3 голосов
/ 04 февраля 2009

Не думаю, что ты можешь!

/home/export/user1 $ sqlplus / 
> @script1.sql
> HOST CD /home/export/user2
> @script2.sql

script2.sql должен быть в /home/export/user1.

Вы либо используете полный путь, либо выходите из сценария и снова запускаете sqlplus из нужного каталога.

#!/bin/bash
oraenv .
cd /home/export/user1
sqlplus / @script1.sql
cd /home/export/user2
sqlplus / @script2.sql

(что-то в этом роде - делать это по памяти!)

2 голосов
/ 12 августа 2016

Я думаю, что переменная среды SQLPATH - лучший способ для этого - если у вас есть несколько путей, введите их через точку с запятой (;). Имейте в виду, что если в каталогах есть файлы сценариев с одинаковыми именами, первый из найденных (по порядку ввода путей) будет выполнен, второй будет проигнорирован.

2 голосов
/ 04 февраля 2009

Вы пытались создать ярлык Windows для SQL плюс и установить рабочий каталог?

1 голос
/ 10 июня 2018

С новым SQLcl от Oracle теперь есть команда cd и сопровождающий pwd. SQLcl можно скачать здесь: http://www.oracle.com/technetwork/developer-tools/sqlcl/overview/index.html

Вот краткий пример:

SQL>pwd
/Users/klrice/
NOT_SAFE>!ls *.sql
db_awr.sql  emp.sql     img.sql     jeff.sql    orclcode.sql    test.sql
db_info.sql fn.sql      iot.sql     login.sql   rmoug.sql

SQL>cd sql
SQL>!ls *.sql
003.sql             demo_worksheet_name.sql     poll_so_stats.sql
1.sql               dual.sql            print_updates.sql

SQL>
1 голос
/ 06 февраля 2017

Спустя годы у меня возникла такая же проблема. Мое решение - создание временного пакетного файла и другого экземпляра sqlplus:

В первом SQL-скрипте:

:
set echo off
spool sqlsub_tmp.bat
prompt cd /D D:\some\dir
prompt sqlplus user/passwd@tnsname @second_script.sql
spool off
host sqlsub_tmp.bat
host del sqlsub_tmp.bat
:

Обратите внимание, что для "second_script.sql" требуется оператор "exit" в конце, если вы хотите вернуться к первому ..

0 голосов
/ 22 августа 2016

для меня выкладка делает эту работу, потому что она дает вам возможность запустить на оболочке команду [a | any]:

http://www.dba -oracle.com / t_display_current_directory_sqlplus.htm

вкратце смотрите текущий каталог:

!pwd

изменить его

!cd /path/you/want

...