27.3.7 Использование JavaScript SQL API
В этом разделе обсуждается использование API для выполнения и получения и обработки результатов как простых SQL-операторов, так и подготовленных операторов. Выполнение SQL на JavaScript доступно только в хранимых процедурах, а не в хранимых функциях.
SQL API поддерживает два типа операторов: простые SQL-операторы (см. Раздел 27.3.7.1, «Простые операторы») и подготовленные операторы (Раздел 27.3.7.2, «Подготовленные операторы»). Подготовленные операторы поддерживают связанные параметры; простые операторы — нет.
Максимальное количество простых операторов, которые могут быть открыты одновременно для выполнения хранимых процедур в заданной сессии, равно 1024. Это число фиксировано и не может быть изменено пользователем. Попытка выполнить больше простых операторов, чем это число, одновременно приводит к ошибке. Подготовленные операторы, выполняемые на JavaScript, учитываются в глобальном лимите, определяемом max_prepared_stmt_count; для получения дополнительной информации см. описание этой переменной.
Результирующий набор, возвращаемый SQL-оператором, буферизуется в памяти. Для простого оператора размер (всего) набора результатов ограничен 1 МБ; для подготовленного оператора любой отдельный ряд может использовать до 1 МБ. В любом случае превышение лимита приводит к ошибке.
Независимо от типа оператора доступны два механизма для потребления результатов. Результирующий набор можно обработать внутри JavaScript или передать напрямую клиенту. Дополнительную информацию см. в Наборах результатов.
Вы также можете получить доступ к данным сессии, таким как временные таблицы, переменные сессии и состояние транзакции. Переменные сессии, объявленные вне хранимых процедур, могут быть доступны внутри хранимых процедур; то же самое относится и к временным таблицам. Кроме того, транзакция, начатая вне хранимой процедуры, может быть подтверждена внутри нее.
Оператор, генерирующий набор результатов, содержащий недопустимые типы данных, приводит к ошибке недопустимого типа. Например, операторы, связанные с DESCRIBE, EXPLAIN или ANALYZE TABLE, затронуты этим ограничением, как показано здесь:
mysql> CALL jssp_simple("DESCRIBE t1");
ERROR 6113 (HY000): JavaScript> Unsupported type BLOB/TEXT for 'Type'
mysql> SHOW WARNINGS;
+-------+------+---------------------------------------------------+
| Level | Code | Message |
+-------+------+---------------------------------------------------+
| Error | 6113 | JavaScript> Unsupported type BLOB/TEXT for 'Type' |
+-------+------+---------------------------------------------------+
1 row in set (0.00 sec)
Установка локальной переменной JavaScript из SQL-оператора внутри хранимой процедуры не поддерживается.
API также поддерживает несколько наборов результатов, например, при вызове одной хранимой процедуры другой. Многострочные запросы не поддерживаются и приводят к синтаксической ошибке.
Некоторые примеры в этом разделе основаны на базе данных world, доступной на веб-сайте MySQL MySQL web site. Для получения помощи по установке базы данных из загружаемого файла см. Раздел 6.5.1.5, «Выполнение SQL-операторов из текстового файла».
© 2025 Oracle
Licensed under the GPLv2 License.