【问题标题】:Filter Stored Procedure Result (Informix)过滤存储过程结果 (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(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.

【问题讨论】:

    标签: sql stored-procedures informix


    【解决方案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.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多