SQL Plus меняет текущий каталог
Как изменить текущий каталог в SQL Plus под окнами.
Я пытаюсь написать script с несколькими командами "@filename".
Я знаю, что можно открыть script с помощью команды File → Open, которая изменит текущий каталог, но я ищу способ сделать это автоматически без присмотра.
Решение
Основываясь на ответе Plasmer, я установил переменную среды SQLPATH в Windows и получил то, что достаточно для меня. Я не пытался установить его с помощью команды HOST (я сомневаюсь, что она сработает).
Ответ Pourquoi Litytestdata является хорошим, но не будет работать для меня (каталоги слишком далеки друг от друга). И, конечно, Гай отвечает, что это невозможно сделать, также верно. Я проголосую за эти два и соглашусь с ответом Plasmer.
Ответы
Ответ 1
Не могли бы вы использовать переменную среды SQLPATH, чтобы сказать sqlplus, где искать скрипты, которые вы пытаетесь запустить? Я считаю, вы могли бы использовать HOST для установки SQLPATH в script тоже.
Там могут быть проблемы, если два сценария имеют одинаковое имя и оба каталога находятся в SQLPATH.
Ответ 2
Вот что я делаю.
Определите переменную, которая поможет вам:
define dir=C:\MySYSTEM\PTR190\Tests\Test1
@&dir\myTest1.sql
Вы не можете cd
в SQL * Plus (вы можете cd
использовать команду host, но поскольку это дочерний процесс, этот параметр не будет сохраняться в вашем родительском процессе).
Ответ 3
Я не думаю, что вы можете изменить каталог в SQL * Plus.
Вместо изменения каталога вы можете использовать @@filename
, который читает в другом script, местоположение которого относительно каталога, в котором работает текущий script. Например, если у вас есть два сценария
C:\Foo\Bar\script1.sql
C:\Foo\Bar\Baz\script2.sql
тогда script1.sql
может запускать script2.sql
, если он содержит строку
@@Baz\script2.sql
Подробнее о @@
см. .
Ответ 4
Я не думаю, что вы можете!
/home/export/user1 $ sqlplus /
> @script1.sql
> HOST CD /home/export/user2
> @script2.sql
script2.sql должен находиться в /home/export/user
.
Вы либо используете полный путь, либо выходите из script и запускаете sqlplus
снова из правого каталога.
#!/bin/bash
oraenv .
cd /home/export/user1
sqlplus / @script1.sql
cd /home/export/user2
sqlplus / @script2.sql
(что-то вроде этого - делать это из памяти!)
Ответ 5
Вы пытались создать ярлык Windows для sql plus и установить рабочий каталог?
Ответ 6
Я думаю, что переменная среды SQLPATH - лучший способ для этого - если у вас есть несколько путей, введите их, разделенные полуколонами (;). Имейте в виду, что если в каталоге есть script файлы, одинаковые среди каталогов, первый из них (по порядку ввода путей) будет выполнен, второй будет проигнорирован.
Ответ 7
для меня shellout-out dows задание, потому что оно дает вам возможность запускать команду [a | any] в оболочке:
http://www.dba-oracle.com/t_display_current_directory_sqlplus.htm
вкратце увидеть текущий каталог:
!pwd
изменить его
!cd /path/you/want
Ответ 8
Через несколько лет у меня была такая же проблема. Мое решение - создание временного пакетного файла и другого экземпляра sqlplus:
В первом SQL- Script:
:
set echo off
spool sqlsub_tmp.bat
prompt cd /D D:\some\dir
prompt sqlplus user/[email protected] @second_script.sql
spool off
host sqlsub_tmp.bat
host del sqlsub_tmp.bat
:
Обратите внимание, что для "second_script.sql" требуется конец "exit", если вы хотите вернуться к первому.