我有一个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.
答案 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)