Я пытался заставить его работать часами ... Но я предполагаю, что это вне моего понимания ...
Вот моя проблема: я пытаюсь запустить скрипт оболочки, который сначала выполняет SQL запросить сбор данных в переменную $ tmp, затем запустить процедуру PL / SQL с использованием содержимого $ tmp. Процедура PL / SQL должна называться X time, где X - номер строки из запроса SQL, лучше всего иметь одно соединение для каждой строки из вывода SQL.
Итак, вот что я попробовал:
1 - SQL ЗАПРОС: Сохраните WANTED_DATA в $ tmp var, чтобы позже использовать его в процедуре PL SQL. Например, скажем, "WANTED_DATA" = "123, 321; 789, 987;" Эта часть работает нормально, но при необходимости ее можно изменить, если результат сохраняется в переменной.
#!/bin/sh
function SQL_REQ {
tmp=$(`$APP_SQL -S $USR/$PWD@$DB <<-eof
select WANTED_DATA
from TABLE
exit
eof`)
PLSQL_Proc #This call the second function
}
2 - PL SQL Процедура: А вот и сложная часть. Функция, которая будет запускать процедуру PL SQL, используя "$ tmp" из предыдущего запроса в процедуре PL SQL. Другая проблема, с которой я столкнулся, заключается в том, что даже если эта работа сработает, она будет подключаться и отключаться от базы данных для каждой строки (разделенной символом «;») $ tmp.
function PLSQL_Proc {
while IFS=; read -r WANTED_DATA
do
$APP_SQL -S $USR/$PWD@$DB<<-eof
DECLARE
result varchar2(100);
BEGIN
result := scripts.remove_data("$WANTED_DATA");
END;
/
eof
done <<< "$tmp"
}
Текущая ошибка (и):
'123, 321' : Command not found - at line 12 (= line Done <<< "$tmp")
scripts.remove_data() : invalid number of arguments
NB:
-Использование Redhat (предыдущая версия - еще не потребовалось время для обновления, ха-ха), и Oracle DB
Если кто-либо из вас есть идея, пожалуйста, дайте мне знать.
Спасибо,