SQL 错误:executeQuery 方法必须返回结果集

Posted

技术标签:

【中文标题】SQL 错误:executeQuery 方法必须返回结果集【英文标题】:SQL Error: The executeQuery method must return a result set 【发布时间】:2013-09-25 07:24:31 【问题描述】:

尝试在 SQL Server 中执行以下查询时出现错误 。

with cte 
AS
(
    SELECT GUID,seq original_seq_no, ROW_NUMBER()
    OVER ( PARTITION BY GUID ORDER BY seq) AS new_seq_no
    FROM CHK_SEQ
)

update  CHK_SEQ
set     CHK_SEQ.seq = r.new_seq_no
from    cte r
where CHK_SEQ.seq = r.original_seq_no AND CHK_SEQ.GUID= r.GUID;

谁能帮帮我。

【问题讨论】:

我假设您从应用程序代码中执行此操作,并且您必须使用 executeNonQuery() 而不是 executeQuery()(当然取决于语言)。 感谢您的回复。我正在编写此语句以更新表格,因为通过 UI 输入了一些不良数据。我不是通过应用程序代码来做的。 【参考方案1】:

executeQuery 方法必须返回一个结果集

您的查询未返回结果集。是一个更新。改用ExecuteNonQuery,Java 使用executeUpdate

【讨论】:

感谢您的回复,我正在编写此查询以更新表,因为通过 UI 输入了一些不良数据。我不是通过应用程序代码来做的。 这是一个 Java 错误,也是一个客户端错误。引擎不会抛出 Java 错误。 @user2810293 您使用哪个程序 (UI) 进行数据库管理? 我直接在 SQL developer 中运行脚本,而不是通过任何 java 代码。命令行错误:1 列:0 错误报告:SQL 错误:executeQuery 方法必须返回结果集 从SQL Server Management Studio 运行脚本。让 SQL Developer 将语句作为非查询运行(提出适当的问题,标记为 Oracle 工具集,而不是 SQL 服务器)。添加一个虚拟结果集。选择你的毒药。学会帮助自己。【参考方案2】:

从 SELECT 语句返回数据

String sql_select = "Select name from people";

Statement st_1 = connection.createStatement();
ResultSet rs_1 = st_1.executeQuery((sql_select));

只运行一条 UPDATE 语句

String sql_update = "Update people set name = 'Natalie' 
Statement st_2 = connection.createStatement();
st_2.executeUpdate(sql_update);

【讨论】:

以上是关于SQL 错误:executeQuery 方法必须返回结果集的主要内容,如果未能解决你的问题,请参考以下文章

SQL ExecuteQuery 3061 错误消息

无法使用 executeQuery 发出数据操作语句

Statement.execute(sql) 与 executeUpdate(sql) 和 executeQuery(sql)

LINQ ExecuteQuery - 错误

00312_预处理对象executeQuery方法(实现数据库的查询)

executeexecuteQuery和executeUpdate之间的区别