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.