Sql 筛选存储过程结果(Informix)

Sql 筛选存储过程结果(Informix),sql,stored-procedures,informix,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')) select AGENT_NAME, AGENT_LOG

我有一个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'))
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: Illegal SQL statement in SPL routine.
接下来,我尝试以下语法:

select AGENT_NAME, AGENT_LOGIN_ID from 
       TABLE(sp_agent_detail('2014-02-04 04:00:00', '2014-02-04 23:00:00'))
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.

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

因此,您的声明将成为:

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)

我使用了您的语句,但结果是如下错误:java.sql.SQLException:发生语法错误:(我还删除了“,”after TABLE语句,然后是enter语句,但我再次收到错误消息:“java.sql.SQLException:SPL例程中的非法sql语句。”我编辑了我的第一个答案,它们是一个小错误,删除了一个“,”。@HojjatJashnniloofar,副驾驶的答案是正确的。因为你在dba.stackexchange@copilot复制了答案:你的答案是正确的,但这条语句无法解决我的问题。我使用这条语句,还收到了一个错误。
java.sql.SQLException:非法的sql语句我nt在SPL例程中。