流水线表函数内的Oracle / update查询

时间:2018-02-06 17:12:53

标签: oracle

我有一个流水线表函数可以正常工作。

我现在需要的是在此函数中执行更新查询:

MATCH (n:User), (n)-[:connected_to*1..2 {status: 1}]-(sp:User),
           (sp)<-[:owner_of|house_mate]-(place:Place)
WHERE (ID(n) = {ID_n}) 
      AND NOT(n)<-[:owner_of|house_mate]-(place)
MATCH (place)-[tenant:owner_of|house_mate]->(u:User)
WITH DISTINCT place,
              type(tenant) AS type,
              u,
              CASE
                WHEN (n)-[:connected_to {status: 1}]-(u) THEN '1'
                WHEN (n)-[:connected_to*1..2 {status: 1}]-(u) THEN '2'
                ELSE '3'
              END AS connection
WITH place,
     collect({type: type, u: u, connection: connection}) AS tenants
RETURN place,
       [tenant IN tenants WHERE tenant.type = 'owner_of'   | [tenant.u, tenant.connection]][0] AS owner_array,
       [tenant IN tenants WHERE tenant.type = 'house_mate' | [tenant.u, tenant.connection]] AS house_mates_array

当我运行此查询时:

  

SELECT * from   TABLE(试验(&#39; 123&#39))

我收到此错误:

  

ORA-14551:无法在查询中执行DML操作

所以很清楚,无法在此处添加更新查询,那么如何执行更新呢?

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

尝试添加

pragma autonomous_transaction;

到您的函数并使用动态SQL进行更新。