Spec-Zone.ru › MySQL Shell 9.2

5.2 Взаимодействие с кодом

По умолчанию MySQL Shell предоставляет интерактивное выполнение баз данных, вводимое в командной строке. Эти операции могут быть написаны на JavaScript, Python или SQL в зависимости от текущего Раздела 5.1, “Активный язык”. При выполнении результаты операции отображаются на экране.

Как и любой другой интерпретатор языка, MySQL Shell очень строго относится к синтаксису. Например, следующий фрагмент JavaScript открывает сессию на MySQL сервере, затем читает и выводит документы из коллекции:

var mySession = mysqlx.getSession('user:pwd@localhost');
var result = mySession.getSchema('world_x').getCollection('countryinfo').find().execute();
var record = result.fetchOne();
while(record){
  print(record);
  record = result.fetchOne();
}

Как видно выше, вызов find() следует за функцией execute(). Команды CRUD баз данных фактически выполняются на MySQL сервере только при вызове execute(). Однако, при интерактивной работе с MySQL Shell execute() вызывается неявно при нажатии Return на утверждение. Затем результаты операции извлекаются и отображаются на экране. Правила того, когда требуется вызов execute(), таковы:

  • При использовании MySQL Shell таким образом, вызов execute() становится необязательным для:

    • Collection.add()

    • Collection.find()

    • Collection.remove()

    • Collection.modify()

    • Table.insert()

    • Table.select()

    • Table.delete()

    • Table.update()

  • Автоматическое выполнение отключается, если объект присваивается переменной. В таком случае вызов execute() является обязательным для выполнения операции.

  • Когда строка обрабатывается и функция возвращает любой из доступных Result объектов, информация, содержащаяся в объекте Result, автоматически отображается на экране. Функции, возвращающие объект Result, включают:

    • Выполнение SQL и операции CRUD (перечисленные выше)

    • Обработка транзакций и функции удаления объектов сессии в модулях mysql и mysqlx: -

      • startTransaction()

      • commit()

      • rollback()

      • dropSchema()

      • dropCollection()

      • ClassicSession.runSql()

Основываясь на вышеуказанных правилах, следующие операторы необходимы в MySQL Shell в интерактивном режиме для создания сессии, запроса и вывода документов из коллекции:

mysql-js> var mySession = mysqlx.getSession('user:pwd@localhost');
mysql-js> mySession.getSchema('world_x').getCollection('countryinfo').find();

Вызов execute() не требуется, и объект Result автоматически выводится.

Поддержка нескольких строк

Возможна спецификация утверждений на нескольких строках. При работе в режиме Python или JavaScript режим многострочности автоматически включается при начале блока утверждений, как в определениях функций, утверждениях if/then, циклах for и т. д. В режиме SQL режим многострочности начинается при вводе команды \.

После запуска режима многострочности введенные утверждения кэшируются.

Например:

mysql-sql> \
... create procedure get_actors()
... begin
...   select first_name from sakila.actor;
... end
...
	  
Примечание

Вы не можете использовать режим многострочности, когда используете команду \sql с запросом для выполнения отдельных SQL-утверждений, когда активен другой язык. Команда принимает только один SQL-запрос в одной строке.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-shell-8.4-en/mysql-shell-interactive-code-execution.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API