如何使用 jdbc java 创建临时表
Posted
技术标签:
【中文标题】如何使用 jdbc java 创建临时表【英文标题】:how to create temp table using jdbc java 【发布时间】:2020-05-25 03:27:48 【问题描述】:我需要创建一个临时表来存储一些 ID,我将在以后的查询中处理这些 ID。我收到错误
com.microsoft.sqlserver.jdbc.SQLServerException: The statement did not return a result set.
当我执行查询以在我的 sql 中创建 #temp 表时。我不需要此执行的任何结果集,只需要创建一个包含记录的临时表。请指导。
我的主要查询代码:
String queryTempTable = "SELECT TOP (2) A.Id INTO #temp\n" +
"FROM SALESDM.dbo.FactSales A\n" +
"INNER JOIN SALESDM2.dbo.FactSales B\n" +
"ON A.Id = B.Id\n" +
"AND (\n" +
" A.sysDateModified = B.sysDateModified\n" +
" OR A.Id = B.Id\n" +
" OR A.ModifiedDatetime = B.ModifiedDatetime\n" +
" )";
System.out.println(queryTempTable);
if (conn == null)
System.out.println("Unable to create Connection");
else
Statement stmtTempTable = conn.createStatement();
stmtTempTable.executeQuery(queryTempTable);
【问题讨论】:
检查这是否回答了您的问题。 ***.com/questions/4728495/… 【参考方案1】:只有在检索数据并需要 ResultSet 时才应使用 executeQuery
。
如果你正在修改数据,那么你应该使用execute
:
stmtTempTable.execute(queryTempTable);
【讨论】:
现在它没有显示任何错误,但它没有在我的数据库中创建任何#temp 表。 尝试从 SELECT 语句中删除INTO
,看看您的查询是否真的返回任何要插入临时表的结果。
您的意思是删除 "INTO #temp" ?是的,它工作并给了我需要转储到临时表中的结果。
尝试在查询末尾添加AS x
。 SELECT... INTO... FROM... AS x
看看是否可行。
我认为添加“AS ...”将充当 Allias,但它已经是带有一个 SELECT 子句的主要查询。我试过这个,但它使我的查询错误。此外,我使用创建 VIEW 而不是 #temp 表,并且您在我的代码中建议的修改“execute()”在那里工作。谢谢。【参考方案2】:
如果可能的话,使用给定的查询创建一个视图?这将充当临时表。稍后根据您的要求调用视图。
【讨论】:
感谢@RajKumar,我尝试创建一个视图作为#temp 表的解决方法,它奏效了。以上是关于如何使用 jdbc java 创建临时表的主要内容,如果未能解决你的问题,请参考以下文章