1

是否可以运行不返回结果集或不是 INSERT 或 UPDATE 类型的脚本的 SQL 脚本?

我正在尝试以下操作:

Query q = entityManager.createNativeQuery("DECLARE @max int;\n" +
        "SELECT @max = MAX(customer_number)+1\n" +
        "FROM organisation\n" +
        "\n" +
        "exec('ALTER SEQUENCE organisation_customer_number_seq RESTART WITH ' + @max)");

...但当然这只是创建查询,如何执行它?我只能找到不同类型的结果集的 getter 和 Query 的 executeUpdate 方法。如何运行我在上面创建的查询以重新启动序列?

4

1 回答 1

2

Query您在实际执行查询时看到的一些方法,例如Query.getResultList

获取结果列表()

执行 SELECT 查询并将查询结果作为无类型列表返回。

List<Object[]> results = q.getResultList();

更新:在您的情况下,查询最终是一个ALTER,因此您发现,相关方法将不executeUpdate()返回列表或值,而是返回受影响的行数。

诠释执行更新()

执行更新或删除语句。

int altered =  q.executeUpdate();
于 2017-03-02T09:25:45.147 回答