Чтобы программа sqlplus считывала входные данные из файла, необходимо добавить к имени файла префикс с символом @
. Таким образом, будет работать следующее:
system("sqlplus", "username/pwd@database", "@filename.sql")
system
может быть вызван либо с одним аргументом (ваша полная команда), либо с несколькими аргументами (с выделением аргументов вашей команды, как в примере выше). Документация для ядра # exec описывает разницу (system
ведет себя так же):
Если exec
дан единственный аргумент,
этот аргумент принимается за строку, которая
подлежит расширению оболочки до
выполняется. Если несколько аргументов
даны, второй и последующий
аргументы передаются как параметры
Команда без расширения оболочки. Если
первый аргумент является двухэлементным
массив, первый элемент
команда должна быть выполнена, а вторая
аргумент используется в качестве значения argv[0]
,
которые могут отображаться в списках процессов.
Примечание: Если вы хотите, чтобы sqlplus завершал работу и возвращался в вашу программу ruby после запуска SQL, убедитесь, что в конце файла SQL включен оператор quit
.