Требуется выполнить test.ksh из процедуры с 4 входными переменными, требуется одно значение выходной переменной от скрипта к процедуре. Не могу найти в сети много информации об этом. Может ли кто-нибудь подсказать, как этого добиться.
После анализа я попробовал метод ниже, но все равно не повезло. Загружен ниже класса java в Oracle DB.
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class KSHCommand {
public static String executeCommand(Long param1,String param2,Long param3, Integer param4) {
StringBuffer output = new StringBuffer();
Process p;
try {
String finalCommand = "Filesystempath/test.ksh";
p = Runtime.getRuntime().exec(finalCommand);
p.waitFor();
BufferedReader reader =
new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine())!= null) {
output.append(line + "\n");
}
} catch (Exception e) {
e.printStackTrace();
}
return output.toString();
}
}
test.ksh
out=`/usr/bin/java test`
echo $out
Ниже приведена функция, определенная для вызова java-метода.
CREATE OR REPLACE FUNCTION testfun(param1 IN NUMBER,param2 IN VARCHAR2,param3 IN NUMBER,param4 IN NUMBER) RETURN VARCHAR2 AS
LANGUAGE JAVA NAME 'KSHCommand.executeCommand(java.lang.Long, java.lang.String, java.lang.Long,java.lang.Integer) return java.lang.String';
/;
Ниже приведен запрос, возвращающий пустые данные.
SELECT testfun(5,'test1',6,7) FROM DUAL;
testfun()
------------------------------------------------
Если тот же файл java выполняется из файловой системы с использованием ./test.ksh, в терминале будет выведен тест.
Не могли бы вы сообщить мне, если что-то упущено, если скрипт выполняется из функции.
заранее спасибо