You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ingres数据库CTE查询执行失败求助:返回结果集错误

Ingres CTE查询报错(Error: Query or Procedure returns a result set)解决方法

你的CTE查询语法本身是正确的,报错Error : Query or Procedure returns a result set(SQLState: 21000,ErrorCode :802840)通常是因为执行环境不允许直接返回结果集,以下是针对性解决步骤:

可能原因及解决办法

1. 在存储过程中执行该查询

Ingres不允许存储过程直接执行SELECT语句返回结果集,必须通过游标处理结果,或把结果插入临时表再返回:
示例代码(用游标处理):

CREATE PROCEDURE get_distinct_emails()
AS
DECLARE
    email_var VARCHAR(255);
    CURSOR c1 IS WITH sample_cte(email) AS(
        SELECT DISTINCT email_address AS email FROM table1
    ) SELECT email FROM sample_cte;
BEGIN
    OPEN c1;
    FETCH c1 INTO email_var;
    WHILE SQLCODE = 0 LOOP
        DBMS_OUTPUT.PUT_LINE(email_var); -- 输出结果,或根据需求处理
        FETCH c1 INTO email_var;
    END LOOP;
    CLOSE c1;
END;

2. 使用的Ingres版本不支持CTE

如果你的Ingres版本低于10,WITH子句(CTE)未被支持,改用子查询替代:

SELECT email FROM (
    SELECT DISTINCT email_address AS email FROM table1
) AS sample_cte;

3. 客户端工具/API连接设置问题

  • 若在Ingres SQL Terminal等工具中执行,检查工具是否开启了结果集返回选项;
  • 若通过API调用执行,确保调用方式支持接收返回的结果集(比如调整API参数,允许处理结果集输出)。

内容的提问来源于stack exchange,提问作者vmb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 01:16:05