PERFORM

PERFORM 执行 SELECT 查询,但不向客户端返回结果行。

描述

PERFORM <select> 完整执行查询,包括普通的权限检查和副作用,但在客户端响应中抑制结果行。该语句仅支持 SELECT 查询;PERFORM 后可以跟普通 SELECT、CTE 查询以及带 UNIONUNION ALL 的查询。

PERFORM 语句的 ROW_COUNT() 返回 0。启用 save_query_result 后,仍可通过 RESULT_SCAN 从内部结果存储读取结果;PERFORM 不会无条件丢弃该内部结果。

不支持 PERFORM ... INTO OUTFILE

语法

PERFORM select_statement

参数释义

PERFORM 接受一个 SELECT 查询,该查询可以包含 WITH 子句或 UNIONUNION ALL 等集合运算符。

示例

DROP DATABASE IF EXISTS perform_demo;
CREATE DATABASE perform_demo;
USE perform_demo;

CREATE TABLE perform_t (v INT);
INSERT INTO perform_t VALUES (3), (1), (2);
PERFORM SELECT v FROM perform_t ORDER BY v;
PERFORM SELECT v FROM perform_t WHERE v = 1 UNION ALL SELECT v FROM perform_t WHERE v = 3;
PERFORM WITH ordered AS (SELECT v FROM perform_t ORDER BY v) SELECT v FROM ordered;
SELECT ROW_COUNT() AS rows_returned;

DROP DATABASE perform_demo;

以下形式会被拒绝:

-- Expected-Success: false
PERFORM SELECT 1 INTO OUTFILE '/tmp/perform.txt';