2013-10-28 7 views
2

У меня есть сценарий, содержащий множество автономных блоков SQL. Я использую переменную подстановки в предложении WHERE каждого блока SQL.Oracle: Как я могу объединить переменную замещения, чтобы сформировать часть имени файла?

Для примера:

DEFINE regionValue="Townsville Region" --yes, there is a space in the attribute value. 

Select ... 
From ... 
WHERE region = '&&regionValue'; 

[это упрощенное представление запросов]

и это повторяется для каждого отдельного запроса, так используется одна переменная подстановки во много раз.

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

Результат я хочу это:

SPOOL c:\reports\Townsville Region_LEAVE.csv 

и

Spool c:\reports\Townsville Region_OVERTIME.csv 

и есть больше.

Мой вопрос: Как я могу объединить переменную замещения, чтобы сформировать часть имени файла?

ответ

2

Surround имя файла в кавычки, например:

SPOOL "c:\reports\&&regionValue._LEAVE.csv" 
+0

Спасибо за ваше предложение, я пытался это безуспешно. Что произойдет, когда я попробую это, мне будет предложено следующее приглашение: 'Введите значение для regionvalue_leave:' – user2593733

+0

Введите значение для regionvalue_leave: – user2593733

+0

Извините, я думаю, вам нужно добавить «.». там, см. мое редактирование; если я получу время, я проверю, правильно это или нет. –

0

В дополнение к полученному ответу, чтобы предотвратить подсказку для ввода значения используйте:

SET VERIFY OFF 
+0

Этого не достигнет того, что вы думаете. Это предотвратит показ окна вывода, где была сделана замена. Если вы не определили переменную подстановки, вы все равно получите приглашение для ее предоставления. – SandPiper