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.