PostgreSQL 02001: no_additional_dynamic_result_sets_returned 报错 故障修复 远程处理

文档解释 02001: no_additional_dynamic_result_sets_returned 左右 错误…

文档解释

02001: no_additional_dynamic_result_sets_returned

左右

错误说明:

错误编码P02001:no_additional_dynamic_result_sets_returned。这是PostgreSQL抛出的一个SQL语法错误,提示程序员在当前环境执行execute语句时无效的。它的意思是,当前的查询未返回任何附加的动态结果集。

在定义存储过程时,有时会使用带有动态结果集的EXECUTE语句来把函数的结果放到一个表变量中,但是由于程序员使用的语法有误,或者执行函数是无效的,导致程序员无法返回预期的结果集。

常见案例

示例1:

CREATE OR REPLACE FUNCTION create_user (

username text,

user_id text

)

RETURNS TABLE (username text, user_id text)

AS

$$

BEGIN

EXECUTE ‘SELECT name, user_id FROM users WHERE name=’ || username || ‘AND user_id=’ || user_id;

END;

$$ LANGUAGE plpgsql;

这里,函数没有正确定义指定要返回输出参数,因此PostgreSQL引擎将抛出P02001。

示例2:

CREATE OR REPLACE FUNCTION create_user (

username text,

user_id text

)

RETURNS TABLE (username text, user_id text)

AS

$$

BEGIN

EXECUTE ‘INSERT INTO users (name, user_id) VALUES (‘ || username || ‘, ‘ || user_id || ‘)’;

END;

$$ LANGUAGE plpgsql;

这里,函数不会返回任何动态结果集,因此PostgreSQL引擎将抛出P02001。

解决方法:

1. 检查EXECUTE语句中的SQL查询是否正确,确保可以返回有效的结果集。

2. 如果程序员不熟悉最新发布的SQL语法,最好在使用之前阅读SQL语言手册,以确保写出适当的SQL查询。

3. 要执行EXECUTE语句,应遵循一般的准则,即要声明变量并将其传递给EXECUTE语句,并在底层查询返回VARIABLE结果时,动态构建查询模块。

4. 验证EXECUTE语句的结果集是否在表示函数和存储过程的返回参数中声明,如果有,则验证其类型是否正确。

5.要返回动态结果集,程序员必须保证EXECUTE语句查询始终返回一个完整的结果集,如果报错,则方法会失败。

6. 根据EXECUTE语句中提供的参数,程序员应使用好习惯的函数来检查参数的有效性,以避免尝试返回无效的结果集。

香港美国云服务器首选港服(Server.HK),2H2G首月10元开通。
港服(Server.HK)(www.IDC.Net)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。

为您推荐

港服(Server.HK)MongoDB教程:MongoDB 索引

MongoDB 索引 索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件...

港服(Server.HK)PostgreSQL教程PostgreSQL 别名

PostgreSQL 别名 我们可以用 SQL 重命名一张表或者一个字段的名称,这个名称就叫着该表或该字段的别名。 创建...

港服(Server.HK)Memcached教程:Memcached stats 命令

Memcached stats 命令 Memcached stats 命令用于返回统计信息例如 PID(进程号)、版本号...

港服(Server.HK)Redis教程:Redis 数据类型

Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集...

港服(Server.HK)Redis教程:Redis GEO

Redis GEO Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 ...
返回顶部