【问题标题】:how to create temp table using jdbc java如何使用 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);
                            }


【问题讨论】:

标签: java sql-server tsql jdbc temp-tables


【解决方案1】:

只有在检索数据并需要 ResultSet 时才应使用 executeQuery

如果你正在修改数据,那么你应该使用execute:

stmtTempTable.execute(queryTempTable);

【讨论】:

  • 现在它没有显示任何错误,但它没有在我的数据库中创建任何#temp 表。
  • 尝试从 SELECT 语句中删除 INTO,看看您的查询是否真的返回任何要插入临时表的结果。
  • 您的意思是删除 "INTO #temp" ?是的,它工作并给了我需要转储到临时表中的结果。
  • 尝试在查询末尾添加AS xSELECT... INTO... FROM... AS x 看看是否可行。
  • 我认为添加“AS ...”将充当 Allias,但它已经是带有一个 SELECT 子句的主要查询。我试过这个,但它使我的查询错误。此外,我使用创建 VIEW 而不是 #temp 表,并且您在我的代码中建议的修改“execute()”在那里工作。谢谢。
【解决方案2】:

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

【讨论】:

  • 感谢@RajKumar,我尝试创建一个视图作为#temp 表的解决方法,它奏效了。
猜你喜欢
  • 2016-12-03
  • 1970-01-01
  • 2017-12-26
  • 1970-01-01
  • 1970-01-01
  • 2013-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多