Neo4J / APOC - Невозможно построить запрос после вызова хранимой процедуры `apoc.cypher.doIt`
Я запускаю следующий запрос Cypher:
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
заявление не похоже на запуск
Если я создам Test2
до CALL
, он создает узел, как и ожидалось.
Может кто-нибудь объяснить, почему это происходит, и как можно продолжить с запросом после этого CALL
статья?
Заранее спасибо!
1 ответ
Проблема здесь в том, что поскольку шифр выполняется в apoc.cypher.doIt()
не возвращает никаких строк, YIELD ничего не дает. Вы можете подтвердить это, заменив свой CREATE в конце на RETURN value
: Без изменений, без записей.
Здесь нет строк, над которыми нужно работать, и все операции выполняются для каждой строки, поэтому CREATE никогда не выполняется, нет строк для его выполнения.
Вам нужно будет вернуть что-то в вашем казненном шифре, return true
или что-то.
Всегда следите за тем, сколько строк ваш запрос генерирует на разных этапах вашего запроса, поскольку ваши операции (сопоставление, создание и т. Д.) Будут выполняться столько раз, сколько строк.