筛选存储过程结果(Informix)

时间:2014-03-05 12:50:25

标签: sql stored-procedures informix

我有一个Informix数据库。此数据库包含名为“sp_agent_details”的存储过程,该过程获取两个DateTime参数。这个存储过程导致大约27列,我只想要几列用于报告。我尝试这种语法:

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.

1 个答案:

答案 0 :(得分:3)

您必须将SP的结果列映射到列名称(按过程返回的顺序!)。

所以你的陈述将成为:

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)