我正在尝试编写一个可以返回结果的Java 存储过程。我在 Oracle 网站上找到了这个文档,但没有提供的示例返回数据 http://docs.oracle.com/cd/B19306_01/java.102/b14187/cheight.htm#CHDJJDGH
我创建了如下包:
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: not a valid function or procedure name
你知道如何解决这个问题吗?或者您知道在哪里可以找到在 Oracle 数据库中返回数据的 java 存储过程的工作示例?
最后使用以下命令得到结果:
select test_proc.hello_world() from dual;
结果:
TEST_PROC.HELLO_WORLD()
-------------------------------------------------------------------------------------
Hello World!!
1 rows selected
你知道如何从数据库中返回复杂的结果,比如多行吗?