DO
September 6, 2023 ยท View on GitHub
DO executes the expressions but does not return any results. In most cases, DO is equivalent to SELECT expr, ... that does not return a result.
Note:
DOonly executes expressions. It cannot be used in all cases whereSELECTcan be used. For example,DO id FROM t1is invalid because it references a table.
In MySQL, a common use case is to execute stored procedure or trigger. Since TiDB does not provide stored procedure or trigger, this function has a limited use.
Synopsis
DoStmt ::= 'DO' ExpressionList
ExpressionList ::=
Expression ( ',' Expression )*
Expression ::=
( singleAtIdentifier assignmentEq | 'NOT' | Expression ( logOr | 'XOR' | logAnd ) ) Expression
| 'MATCH' '(' ColumnNameList ')' 'AGAINST' '(' BitExpr FulltextSearchModifierOpt ')'
| PredicateExpr ( IsOrNotOp 'NULL' | CompareOp ( ( singleAtIdentifier assignmentEq )? PredicateExpr | AnyOrAll SubSelect ) )* ( IsOrNotOp ( trueKwd | falseKwd | 'UNKNOWN' ) )?
Examples
This SELECT statement pauses, but also produces a result set.
mysql> SELECT SLEEP(5);
+----------+
| SLEEP(5) |
+----------+
| 0 |
+----------+
1 row in set (5.00 sec)
DO, on the other hand, pauses without producing a result set.
mysql> DO SLEEP(5);
Query OK, 0 rows affected (5.00 sec)
mysql> DO SLEEP(1), SLEEP(1.5);
Query OK, 0 rows affected (2.50 sec)
MySQL compatibility
The DO statement in TiDB is fully compatible with MySQL. If you find any compatibility differences, report a bug.