2
我們有一個數據庫函數來緩存序列值。它接受序列對象名稱和獲取大小,遞增序列並返回值。 返回類型是一個oracle集合。oracle集合作爲函數返回類型
這裏是由函數所使用的分貝類型定義:
create or replace type icn_num_type as object(v_inc_num number);
create or replace type icn_num_type_table as table of icn_num_type; --this is returned
該函數返回的值在應用側高速緩存。我們正在使用ibatis進行DAO。當函數,類型和序列對象都在同一個模式中時,所有這些都很有效。
現在我們有一個父模式中定義的函數,類型和序列。用戶模式具有所有上述對象的同義詞。我現在面臨以下錯誤:
--- The error occurred while executing query procedure.
--- Check the {? = call seq_inc(?, ?)}.
--- Check the output parameters (register output parameters failed).
--- Cause: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist
ORA-06512: at "SYS.DBMS_PICKLER", line 18
ORA-06512: at "SYS.DBMS_PICKLER", line 58
ORA-06512: at line 1
但是,當我們從SQLDeveloper(用戶架構)訪問函數時,它工作正常。
有人能幫我解決這個問題嗎?
嘗試在調用「{?= call seq_inc(?,?)}」的前提下爲模式名稱添加前綴。 – 2011-05-14 17:05:48
感謝您的回覆Michael。函數調用的前綴模式。 ? =調用USER_SCHEMA.seq_inc(?,?)相同的問題仍然存在。 – Krish 2011-05-15 16:52:26
你是否在類型名稱的前綴? – Samuel 2011-05-15 18:12:33