Подтвердить что ты не робот

SQL Plus меняет текущий каталог

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

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

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


Решение

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

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

4b9b3361

Ответ 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", если вы хотите вернуться к первому.