A simple statement returns a result set which can be used to access data (rows), metadata, and diagnostic information.
A simple statement is static, and cannot be modified after
creation; in other words, it cannot be parametrized. A simple
statement containing one or more ?
parameter
markers raises an error. See
Section 27.3.7.2, “Prepared Statements”, for information
about prepared statements, which allow arbitrary values for
parameters to be specified at execution time.
Most SQL statements which are valid in MySQL can be used as simple statements; for exceptions, see SQL Statements Not Permitted in Stored Routines. A minimal example of a stored procedure using the JavaScript simple statement API is shown here:
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()
}
$$;
This stored procedure takes a single input parameter: the text
of an SQL statement. We obtain an instance of
SqlExecute
by passing this
text to the global Session
object's sql()
method. Calling this instance's
execute()
method
yields an SqlResult
; we can
get the names of the columns in this result set using
getColumnNames()
,
and iterate through all its rows by calling
fetchOne()
until it
fails to return another row (that is, until the method returns
false
). The column names and row contents are
written to stdout
using
console.log()
.
We can test this procedure using a simple join on two tables in
the world
database and then checking
stdout
afterwards, like this:
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)
The result set returned by a single simple statement cannot be greater than 1 MB.