2
나는 다음과 사이퍼 쿼리를 실행하고

호출 한 후 쿼리를 작성 할 수 없습니다 : 이후Neo4J/APOC은 저장 프로 시저 'apoc.cypher.doIt`

WITH "CREATE (test:Test {id: 1})" AS cypher 
CALL apoc.cypher.doIt(cypher, {}) YIELD value 
CREATE (test2:Test2 {id: 2}) 

를, 내가 MATCH (a) RETURN a을 실행하고 Test으로, 그 하나의 노드를 참조 레이블이 만들어집니다. 두 번째 CREATE 문이 실행되지 않는 것 같습니다.

보다 앞에 CALL을 만들면 예상대로 노드가 만들어집니다.

누구도이 문제가 발생하는 이유와이 CALL 절 이후의 쿼리를 어떻게 계속 진행할 수 있는지 설명 할 수 있습니까?

미리 감사드립니다.

답변

3

여기에서 문제는 apoc.cypher.doIt()에서 실행 된 사이퍼가 아무런 행도 반환하지 않기 때문에 YIELD는 아무 것도 산출하지 않는다는 것입니다. 마지막에 CREATE를 RETURN value으로 바꾸면이를 확인할 수 있습니다 : 변경 사항이없고 레코드가 없습니다.

작동 할 행이없고 모든 작업이 행 단위로 수행되므로 CREATE는 실행되지 않으며 실행할 행이 없습니다.

실행 된 키퍼에 return true 또는 무엇인가를 반환해야합니다.

작업 (일치, 만들기 등)이 행만큼 많기 때문에 쿼리의 여러 단계에서 쿼리가 생성하는 행 수를 항상주의하십시오.

+0

완벽 해, 그랬어! 설명 주셔서 감사합니다! – cstaikos