Spec-Zone.ru › MySQL 9.2

27.3.7.1 Простые операторы

Простой оператор возвращает набор результатов, который можно использовать для доступа к данным (строкам), метаданным и диагностической информации.

Простой оператор является статическим и не может быть изменён после создания; другими словами, он не может быть параметризован. Простой оператор, содержащий один или несколько маркеров параметров ?, вызывает ошибку. См. Раздел 27.3.7.2, «Подготовленные операторы» для получения информации о подготовленных операторах, которые позволяют задавать произвольные значения параметров во время выполнения.

Большинство SQL-операторов, допустимых в MySQL, могут использоваться как простые операторы; для исключений см. SQL-операторы, запрещенные в хранимых процедурах. Пример минимальной хранимой процедуры, использующей JavaScript API для простых операторов, показан ниже:

CREATE PROCEDURE jssp_vsimple(IN query VARCHAR(250))
LANGUAGE JAVASCRIPT AS $$

  let stmt = session.sql(query)
  let result = stmt.execute()

  console.log(result.getColumnNames())

  let row = result.fetchOne()

  while(row) {
    console.log(row.toArray())
    row = result.fetchOne()
  }

$$;

Эта хранимая процедура принимает один входной параметр: текст SQL-оператора. Мы получаем экземпляр SqlExecute, передав этот текст глобальному объекту Session методу sql(). Вызов метода execute() этого экземпляра возвращает SqlResult; мы можем получить имена столбцов в этом наборе результатов с помощью getColumnNames() и перебрать все его строки, вызывая fetchOne(), пока он не вернёт false. Имена столбцов и содержимое строк записываются в stdout с помощью console.log().

Мы можем протестировать эту процедуру, используя простое соединение двух таблиц в базе данных world и затем проверив stdout, как показано ниже:

mysql> CALL jssp_vsimple("
    ">   SELECT c.Name, c.LocalName, c.Population, l.Language
    ">   FROM country c
    ">   JOIN countrylanguage l
    ">   ON c.Code=l.CountryCode
    ">   WHERE l.Language='Swedish'
    "> ");
Query OK, 0 rows affected (0.01 sec)

mysql> SELECT mle_session_state('stdout')\G
*************************** 1. row ***************************
mle_session_state('stdout'): Name,LocalName,Population,Language
Denmark,Danmark,5330000,Swedish
Finland,Suomi,5171300,Swedish
Norway,Norge,4478500,Swedish
Sweden,Sverige,8861400,Swedish

1 row in set (0.00 sec)

Набор результатов, возвращаемый одним простым оператором, не может превышать 1 МБ.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/srjs-api-simple-statements.html

Spec-Zone.ru

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