运行过程

时间:2015-12-15 14:36:18

标签: java postgresql unit-testing stored-procedures oracle-sqldeveloper

我在为查询创建单元测试时遇到问题。在Java方法中,它看起来像这样:

public String method () {
    StringBuilder query = new StringBuilder();
    query.append(" BEGIN  ");
    query.append(" <stored procedure name> ;");
    query.append(" END; " );
    return query.toString(); }

在测试方法中,它必须执行回滚事务。对于经典的插入/删除/更新,它们将在批处理中添加启动事务/回滚。但我不确定它是否适用于存储过程,特别是如果它们包含在“begin”/“end”中。我需要知道PostgreSQL的相同答案。

1 个答案:

答案 0 :(得分:0)

对于初学者来说,Postgres中没有存储过程。只有功能,几乎,但不完全相同。 DO statement或准备好的声明也可能适合您。

特别是,函数总是原子的并在事务中运行。在调用它们的外部事务中,或者在它们自己的事务中。

并且,函数可以像任何其他SQL命令一样回滚。一些无法回滚的命令也不能嵌套在外部事务中(如CREATE DATABASE),因此也不能在函数内部使用。

BEGIN;
-- do something else
SELECT myfunc();
-- do something else
ROLLBACK;  -- everything back to the start (well, almost everything)

相关: