SQL, pl/sql, sqlplus: как вернуть переменную в пакетный файл DOS?
У меня есть пакетный файл DOS, который вызывает sqlplus, который выполняет некоторый базовый SQL, содержащийся в другом файле.sql, и я хочу, чтобы последняя часть возвращала значение обратно в пакетный файл dos. Однако, несмотря на то, что через Google есть много примеров того, как это сделать с помощью оболочки Unix, ближе всего я получаю пакетные файлы для DOS:
SELECT
MAX(magicnumber)
INTO
:ret_val
FROM
ABCD.EFGH
exit :ret_val
Тем не менее, это не работает для меня - sqlplus просто дает мне сообщение об использовании для выхода.
Например, если я выполняю "выход 15", пакетный файл DOS правильно сообщает код возврата (используя уровень ошибки), так что с этой частью все в порядке.
Есть ли какой-то синтаксис, который мне не хватает? Я должен отметить, что я очень новичок в SQL, так что это может быть очень очевидная вещь, которую я не вижу... Спасибо!
1 ответ
Обходной путь - просто распечатать результат, а затем записать его, как это делают оболочки Unix. Пользователь "shoblock" на dbforums.com предоставляет этот пример здесь:
http://www.dbforums.com/oracle/1034420-how-return-value-pl-sql-script.html
По сути, файл bat имеет:
FOR /F "usebackq delims=!" %%i IN (`sqlplus -s u/p@db @t`) DO set xresult=%%i
echo %xresult%
Сейчас я иду с этим.