我試圖通過在Oracle中創建的語義模型上運行語義相關的SQL來探索Oracle數據庫的語義特性。但我無法做到這一點,並且關於這方面的信息很少。Oracle 11g2是否支持用於sem_match函數的遊標?
該過程的功能很簡單,可以從sparql查詢中獲取結果集。
CREATE OR REPLACE PROCEDURE PROC_MERGE_PATHWAY_SEM AS
TYPE c_type IS REF CURSOR;
semCursor c_type;
p1 VARCHAR2(40);
p2 VARCHAR2(40);
interCount INTEGER;
BEGIN
OPEN semCursor FOR
'SELECT p1, p2, COUNT(g) as interCount
FROM TABLE (sem_match (
"{?p1 <http://example.com/test.owl#relates_to> ?g . ?p2 <http://example.com/test.owl#relates_to> ?g }",
sem_models("pathway"),
null,
null,
null))';
LOOP
FETCH semCursor INTO p1, p2, interCount;
EXIT WHEN semCursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(p1||','||p2||','||interCount);
END LOOP;
/*
FOR records IN semCursor LOOP
DBMS_OUTPUT.PUT_LINE('test');
END LOOP; */
END PROC_MERGE_PATHWAY_SEM;
編譯錯誤如下:
ORA-00972:標識符太長
ORA-06512:在 「SYSTEM.PROC_MERGE_PATHWAY_SEM」,第9行
ORA-06512:在第2行
我不確定是否由遊標語句包裝的sem_match語法錯誤或Oracle 11g2中的錯誤引起的?有人可以幫助我嗎?謝謝。
你真的需要圍繞select語句的引號嗎? – Mat 2012-07-11 21:08:39
如果我不放''引號,它將兩個Sparql查詢語句視爲一個整體字符串,這會導致「標識符太長」錯誤。 – Peiqin 2012-07-12 14:40:06
嗨,馬特,我知道我不應該把'''引號圍繞select語句,但我根據這個頁面做了修改[線程:SEM_MATCH導致錯誤,ORA-22905](https://forums.oracle。 com/forums/thread.jspa?messageID = 4561450),它只能讓我的程序成功編譯,但運行時會出現上述錯誤。 – Peiqin 2012-07-12 14:45:10