DO

DO 语句用于执行表达式,但不返回任何结果。大部分情况下,DO 相当于不返回结果的 SELECT expr, ...,

DO 在 MySQL 中的一个主要应用场景是存储过程或者触发器。因为 TiDB 当前不支持存储过程和触发器,所以 DO 的实际使用场景较少。

语法图

DoStmt
DOExpressionList
ExpressionList
Expression,
Expression
singleAtIdentifierassignmentEqNOTExpressionlogOrXORlogAndExpressionMATCH(ColumnNameList)AGAINST(BitExprFulltextSearchModifierOpt)PredicateExprIsOrNotOpNULLCompareOpsingleAtIdentifierassignmentEqPredicateExprAnyOrAllSubSelectIsOrNotOptrueKwdfalseKwdUNKNOWN

示例

这条 SELECT 语句会暂停执行,但同时也会返回一个结果集。

SELECT SLEEP(5);
+----------+ | SLEEP(5) | +----------+ | 0 | +----------+ 1 row in set (5.00 sec)

如果使用 DO 的话,语句同样会暂停,但不会返回结果集。

DO SLEEP(5);
Query OK, 0 rows affected (5.00 sec)
DO SLEEP(1), SLEEP(1.5);
Query OK, 0 rows affected (2.50 sec)

MySQL 兼容性

DO 语句与 MySQL 完全兼容。如发现任何兼容性差异,请在 GitHub 上提交 issue

另请参阅