3.4 MySQL Shell 自動程式碼執行

當您在完全指定要使用語法的程式語言中使用 X DevAPI 時,例如,當透過 X DevAPI session 執行 SQL 語句或使用任何 CRUD 操作時,實際操作僅在呼叫 execute() 函數時才會執行。例如

var result = mySession.sql('show databases').execute()
var result2 = myColl.find().execute()

上述 execute() 函數的呼叫會導致操作被執行,並傳回 Result 物件。然後將傳回的 Result 物件指派給變數,而指派是最後執行的操作,它不會傳回任何資料。此類操作也可以傳回 Result 物件,該物件用於處理從操作傳回的資訊。

或者,MySQL Shell 提供以下可用性功能,使其更容易以互動方式使用 X DevAPI

  • 自動執行 CRUD 和 SQL 操作。

  • 自動處理結果。

為了實現此功能,MySQL Shell 會在您每次輸入語句時監控上次執行的操作的結果。這些功能的組合使得使用 MySQL Shell 互動模式成為程式碼原型開發的理想選擇,因為操作會立即執行,並且其結果會顯示,而無需任何額外的程式碼。有關更多資訊,請參閱 MySQL Shell 8.0

自動程式碼執行

如果 MySQL Shell 偵測到已傳回準備執行的 CRUD 操作,它會自動呼叫 execute() 函數。在 MySQL Shell 中重複上述範例並移除指派操作會顯示該操作會自動執行。

mysql-js> mySession.sql('show databases')
mysql-js> myColl.find()

MySQL Shell 執行 SQL 操作,如上所述,一旦此操作執行,就會傳回 Result 物件。

自動結果處理

如果 MySQL Shell 偵測到將傳回 Result 物件,它會自動處理該物件,並以最佳格式列印結果資料。Result 物件有不同類型,它們的格式會有所不同。

mysql-js> db.countryInfo.find().limit(1)
[

    {

        "GNP": 828,

        "IndepYear": null,

        "Name": "Aruba",

        "_id": "ABW",

        "demographics": {

            "LifeExpectancy": 78.4000015258789,

            "Population": 103000

        },

        "geography": {

            "Continent": "North America",

            "Region": "Caribbean",

            "SurfaceArea": 193

        },

        "government": {

            "GovernmentForm": "Nonmetropolitan Territory of The Netherlands",

            "HeadOfState": "Beatrix"

        }

    }

]

1 document in set (0.00 sec)