2011-07-16 72 views
1

我試圖通過JDBC向Oracle插入記錄。然而,返回將Java插入Oracle 9i

"ORA-20999: 735014|Unable to make amendment - session was not initialised" when execute the executeUpdate statement.

這裏是SQL:

Statement stmt = con.createStatement(); 
result = stmt.executeUpdate("insert into test_table (ID, LOCATION) select '1', LOCATION from test_table where rownum=1");

任何想法解決它?

+4

ORA-20999被定義爲「用戶指定的消息」,這意味着它被保留給不屬於Oracle的自定義應用程序。你似乎不是在與數據庫進行交互,而是與一些中間應用程序交互,而不知道哪個應用程序,我們無法真正幫助。 –

回答

1

看來您的數據庫正在使用行級安全性,即您對錶的所有行都沒有相同的訪問權限。相反,權利依賴於一些上下文信息,例如,您所屬的部門。

行級別的安全要求,在您可以訪問數據之前初始化上下文,以便數據庫知道您屬於哪個部門(或任何所需的上下文信息)。

一旦你打開了數據庫會話,你可能必須首先調用某個PL/SQL過程,然後才能選擇或插入數據。數據庫管理員或者 - 在商業軟件包的情況下 - 軟件製造商當然可以告訴你更多關於它的信息。

+0

非常感謝。它真的是行級安全問題。最後,我使用callable語句在插入數據之前首先運行某些PL/SQL過程。 – Edward

+0

如果有用,請接受此答案。這是向Stackoverflow社區提供反饋的官方方式,所以他們知道如果遇到同樣的問題應遵循哪個答案。 – Codo