Я пытаюсь написать хранимую процедуру Java, которая может вернуть результат. Я нашел этот документ на веб-сайте Oracle, но ни один из примеров не предусмотрено возвращаемые данные http://docs.oracle.com/cd/B19306_01/java.102/b14187/cheight.htm#CHDJJDGHOracle хранимые процедуры, возвращающие данные
Я создал пакет следующим образом:
CREATE OR REPLACE PACKAGE test_proc AS
FUNCTION hello_world RETURN VARCHAR2;
PROCEDURE insert_test(CHAINE VARCHAR2, NOMBRE NUMBER);
END test_proc;
Пакет тела, как следовать
CREATE OR REPLACE PACKAGE BODY test_proc AS
FUNCTION hello_world RETURN VARCHAR2 AS LANGUAGE JAVA
NAME 'TestProc.helloWorld() return java.lang.String';
PROCEDURE insert_test(CHAINE VARCHAR2, NOMBRE NUMBER) AS LANGUAGE JAVA
NAME 'TestProc.insertTEST(java.lang.String, int)';
END test_proc;
И Java-код
public class TestProc {
public static void insertTEST(String chaine, int nombre)
{
System.out.println("Insert into test...");
String sql = "INSERT INTO TEST VALUES(?,?)";
try
{
Connection conn = DriverManager.getConnection("jdbc:default:connection:");
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, chaine);
pstmt.setInt(2, nombre);
pstmt.executeUpdate();
}
catch (SQLException e)
{
System.err.println(e.getMessage());
}
}
public static String helloWorld()
{
return "Hello world!!";
}
}
Я использую SQLDeveloper назвать свои процедуры, используя следующие инструкции
CALL test_proc.insert_test('test',1); #work
CALL test_proc.hello_world(); #doesn't work
При выполнении второй инструкции у меня есть следующее сообщение об ошибке ORA-06576: не действительный функции или процедуры, имя
Вы знаете, как решить эту проблему ? Или вы знаете, где найти рабочий пример Java-хранимой процедуры, возвращающей данные в базе данных Oracle?
Наконец получил результат, используя следующую команду:
select test_proc.hello_world() from dual;
Результат:
TEST_PROC.HELLO_WORLD()
-------------------------------------------------------------------------------------
Hello World!!
1 rows selected
Вы знаете, как вернуть комплексный результат из базы данных, как множественный ряд?
выходной вар VARCHAR2 (30) ВЫЗОВА test_proc.hello_world() в: выход; Выход для печати – Darwiin
И получил следующую ошибку: ORA-01008: «не все переменные связаны» (Извините за форматирование, похоже, не работает в комментариях ...) – Darwiin