使用JDBC Java如何创建临时表

4

我需要创建一个临时表来存储一些ID,在稍后的查询中将处理这些ID。但是我收到了错误消息:

com.microsoft.sqlserver.jdbc.SQLServerException: 该语句未返回结果集。

当我在我的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);
                            }



3
请确认这是否回答了您的问题。 https://dev59.com/qVPTa4cB1Zd3GeqPj4FY#17826631 - Harmandeep Singh Kalsi
2个回答

2

当您检索数据并想要ResultSet时,应仅使用executeQuery

如果您正在修改数据,则应使用execute

stmtTempTable.execute(queryTempTable);

现在没有显示任何错误,但是它没有在我的数据库中创建任何#temp表。 - Amad Bin Mumtaz
尝试从SELECT语句中删除INTO,看看你的查询是否实际返回任何结果以插入到临时表中。 - Brice Frisco
你的意思是要移除 "INTO #temp" 吗?是的,它正在工作并给我提供了需要转储到临时表中的结果。 - Amad Bin Mumtaz
尝试在查询的末尾添加 AS xSELECT... INTO... FROM... AS x,看看是否有效。 - Brice Frisco
我认为添加 "AS ..." 将作为别名,但它已经是一个带有一个 SELECT 子句的主查询。我尝试过这个,但它使我的查询出错了。此外,我使用创建 VIEW 而不是 #temp 表进行了工作,并且您在我的代码中建议的修改 "execute()" 在那里起作用了。谢谢。 - Amad Bin Mumtaz

1
如果可能的话,使用给定的查询创建一个视图?这将作为一个临时表。根据您的要求稍后调用该视图。

谢谢@RajKumar,我尝试创建一个视图来解决#temp表的问题,它起作用了。 - Amad Bin Mumtaz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接