2014-03-05 143 views
1

我有一個Informix數據庫。該數據庫包含名爲「sp_agent_details」的存儲過程,該存儲過程獲取兩個DateTime參數。此存儲過程產生大約27列,我只需要幾列就可以進行報告。我試試這個語法:篩選器存儲過程結果(Informix)

select AGENT_NAME, AGENT_LOGIN_ID from 
     TABLE(sp_agent_detail('2014-02-04 04:00:00', '2014-02-04 23:00:00')) 

這個結果這樣的錯誤:

java.sql.SQLException: Illegal SQL statement in SPL routine. 

接下來,我試試這個語法:

select AGENT_NAME, AGENT_LOGIN_ID from 
     TABLE(MULTISET{sp_agent_call_summary 
    ('2014-02-04 04:00:00', '2014-02-04 23:00:00')}) 

結果:

java.sql.SQLException: Function (informix.sp_agent_call_summary) 
returns too many values. 

回答

3

你必須映射將SP的結果列轉換爲columnames(在or中)他們是由程序返回! )。

所以你的發言會變成:

select AGENT_NAME, AGENT_LOGIN_ID from 
    TABLE(sp_agent_detail('2014-02-04 04:00:00', '2014-02-04 23:00:00'))(AGENT_NAME, AGENT_LOGIN_ID, other columns that are returned by your SP) 
+0

我用你的聲明,但它的結果是這樣的錯誤: 值java.sql.SQLException:發生語法錯誤。 :( –

+0

另外我刪除了TABLE語句後的「,」然後輸入語句,但我又收到了這個錯誤消息:「java.sql.SQLException:SPL例程中的非法SQL語句。」 –

+0

我編輯了我的第一個答案,他們的是一個小錯誤,刪除了一個',' – Copilot