过滤存储过程结果 (Informix)
Posted
技术标签:
【中文标题】过滤存储过程结果 (Informix)【英文标题】:Filter Stored Procedure Result (Informix) 【发布时间】:2014-03-05 12:50:24 【问题描述】:我有一个 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(MULTISETsp_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】:您必须将 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)
【讨论】:
我使用了你的语句,但它的结果是这样的错误:java.sql.SQLException:发生了语法错误。 :( 我还删除了 TABLE 语句后的“,”,然后输入语句,但我再次收到此错误消息:“java.sql.SQLException:SPL 例程中的非法 SQL 语句。” 我编辑了我的第一个答案,他们是一个小错误,删除了一个','。 @HojjatJashnniloofar ,副驾驶的答案是正确的。由于您在 dba.stackexchange I answer there with code example... 复制了答案 @Copilot:您的回答是正确的,但此陈述无法解决我的问题。我使用这个语句,我也收到了一个错误。java.sql.SQLException: Illegal SQL statement in SPL routine.
以上是关于过滤存储过程结果 (Informix)的主要内容,如果未能解决你的问题,请参考以下文章