官术网_书友最值得收藏!

3.3.21 CALL語句

CALL語句用于調用數據庫中的過程(Procedure)。使用CALL語句調用過程時,需要指定所需要的參數。可以通過在過程名的后面使用逗號分隔的列表來顯式地指定,也可以使用查詢參數來作為過程調用的實參。后者僅適用于在單獨的過程調用中作為參數,即整個查詢語句只包含一個單一的CALL調用。

大多數的過程返回固定列的記錄流,類似于Cypher查詢返回的記錄流。YIELD子句用于顯式地選擇返回結果集中的哪些部分并綁定到一個變量以供后續的查詢引用。在一個更大的查詢內部,過程調用返回的結果可以顯式地使用YIELD引入一個WHERE子句來過濾結果(類似WITH …WHERE …)。

Neo4j支持VOID過程。VOID過程既沒有聲明任何結果字段,也不返回任何結果記錄。調用VOID過程可能有一個副作用,就是它既不允許也不需要使用YIELD。在一個大的查詢中調用VOID過程,就像WITH *在記錄流的作用那樣簡單地傳遞輸入的每一個結果。

下面的例子顯示了如何傳遞實參并從一個過程中返回結果字段,所有的例子將使用下面的過程:

3.3.21.1 調用過程

本例調用數據庫內嵌的過程db.labels,它可列出數據庫中的所有標簽。

查詢:

結果:

3.3.21.2 使用命名空間和名字調用過程

本例調用數據庫內嵌的過程db.labels,它可列出數據庫中的所有標簽。

查詢:

結果:

3.3.21.3 使用字面值參數調用過程

下面使用字面值參數調用了例子中的過程org.neo4j.procedure.example.addNodeToIndex,參數直接寫在語句中。

查詢:

因為例子中的過程不返回任何結果,因此結果將返回空。

結果:

3.3.21.4 使用參數作為實參調用過程

這里使用參數作為實參調用了例子中的過程org.neo4j.procedure.example.addNodeToIndex。每個過程的實參所取的值為參數語句中同名的參數對應的值(如果沒有這個參數,則值為null)。

參數:

查詢:

因為例子中的過程不返回任何結果,因此結果將為空。

結果:

3.3.21.5 混合使用字面值和參數調用過程

這里,混合使用字面值和參數來作為過程的參數來調用例子中的過程org.neo4j.procedure.example.addNodeToIndex。

參數:

查詢:

因為例子中的過程不返回任何結果,因此結果將為空。

結果:

3.3.21.6 使用字面值和默認實參調用過程

這里使用字面值和過程本身提供的默認值作為參數,調用例子中的過程org.neo4j.procedure.example.addNodeToIndex。

查詢:

因為例子中的過程不返回任何結果,因此結果將為空。

結果:

3.3.21.7 在復雜查詢中調用過程

這里調用數據庫內嵌的過程db.labels,計算數據庫中的總標簽數。

查詢:

因為過程調用是大的查詢的一部分,所以所有的輸出都必須顯式地命名。

結果:

3.3.21.8 調用過程并過濾結果

這里調用數據庫內嵌的過程db.labels,并計算數據庫中所有在用的包含“User”詞的標簽。

查詢:

因為過程調用是大的查詢的一部分,所以所有的輸出都必須顯式地命名。

結果:

3.3.21.9 在復雜查詢中調用過程并重命名結果

這里調用內嵌過程db.propertyKeys作為一部分,計算數據庫中包含每個屬性鍵的節點數。

查詢:

因為過程調用是大的查詢的一部分,所以,所有的輸出都必須顯式地命名。

結果:

主站蜘蛛池模板: 抚州市| 大竹县| 长垣县| 攀枝花市| 萝北县| 孝昌县| 朔州市| 崇仁县| 伊川县| 东山县| 旌德县| 景宁| 四平市| 大庆市| 涿鹿县| 屯留县| 油尖旺区| 恩施市| 获嘉县| 忻城县| 金川县| 水城县| 琼海市| 丹江口市| 景德镇市| 夏河县| 大化| 南华县| 临城县| 佳木斯市| 桑日县| 青神县| 百色市| 康乐县| 南昌市| 北辰区| 石阡县| 沙雅县| 南丰县| 洛南县| 兴义市|