簡體   English   中英

Oracle Java存儲過程返回數據

[英]Oracle Java stored procedures returning data

我正在嘗試編寫一個可能返回結果的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:無效的函數或過程名稱

你知道如何解決嗎? 還是您知道在哪里可以找到在Oracle數據庫中返回數據的Java存儲過程的工作示例?

最終使用以下命令獲得了結果:

select test_proc.hello_world() from dual;

結果:

TEST_PROC.HELLO_WORLD()                                                              
-------------------------------------------------------------------------------------
Hello World!!
1 rows selected

您知道如何從數據庫中返回復雜結果嗎?

對於返回某些內容的PL / SQL函數,您不能像在過程中那樣在PL / SQL中對其進行調用。 將該函數稱為函數。 嘗試

var test VARCHAR2(30)
CALL test_proc.hello_world() INTO :test;
print test

TEST
------------------------------------------
Hello world!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM