文档下载建议反馈入口

  • 所需权限
  • 语法格式
  • 参数说明
  • 语法示例

PREPARE

PREPARE 语句用于预处理 SQL 语句的 SQL 命令,允许系统将 SQL 语句准备好以供后续的执行。SQL 语句准备好后,可以使用 EXECUTE 命令执行 SQL 语句。

KWDB 支持用户使用 PREAREEXECUTE 语句向指定表写入数据、查询指定表的数据或删除指定表的数据。

提示

在 KWDB 执行 PREPAREEXECUTE 之间,如果表的元数据发生变更,如添加列、修改列类型等,准备好的 SQL 语句可能失效,导致执行时出现报错。

所需权限

  • 写入数据:用户拥有目标表的 INSERT 权限。
  • 查询数据:用户拥有目标表的 SELECT 权限。
  • 删除数据:用户拥有目标表的 SELECT 和 DELETE 权限。

语法格式

  • PREPARE

  • EXECUTE

参数说明

参数说明
statement_name预处理的 SQL 语句名称。
statement_sqlINSERTQUERYDROP 语句,语句中使用 $<number> 做占位符,例如 $1, $2
parameter_value待写入、查询或删除的参数值。参数值需要对应INSERTQUERYDROP 语句中的占位符。

语法示例

  • 不指定列名向时序表写入一行数据。

    CREATE TABLE vehicle_gps_track (TIME timestamp not NULL, LATITUDE float, LONGITUDE float, ALTITUDE float, SPEED float, DIRECTION varchar) TAGS (IMEI int not null) PRIMARY TAGS (IMEI);        
    CREATE TABLE
    
    PREPARE p1 AS INSERT INTO vehicle_gps_track VALUES ($1,$2,$3,$4,$5,$6,$7);
    PREPARE
    
    EXECUTE p1 ('2024-02-06 12:00:00', 34.0522, -118.2437, 100, 60, 'North', 12345678);
    INSERT 1
    
    SELECT * FROM vehicle_gps_track;
                time            | latitude | longitude | altitude | speed | direction |   imei
    ----------------------------+----------+-----------+----------+-------+-----------+-----------
      2024-02-06 12:00:00+00:00 |  34.0522 | -118.2437 |      100 |    60 | North     | 12345678
    
  • 不指定列名向时序表写入多行数据。

    PREPARE p2 AS INSERT INTO vehicle_gps_track VALUES ($1,$2,$3,$4,$5,$6,$7),($8,$9,$10,$11,$12,$13,$14);
    PREPARE
    
    EXECUTE p2 ('2024-02-06 12:15:00', 40.7128, -74.0060, 150, 55, 'East', 23456789,'2024-02-06 12:30:00', 51.5074, -0.1278, 80, 70, 'West', 34567890);
    INSERT 2
    
    SELECT * FROM vehicle_gps_track;
                time            | latitude | longitude | altitude | speed | direction |   imei
    ----------------------------+----------+-----------+----------+-------+-----------+-----------
      2024-02-06 12:00:00+00:00 |  34.0522 | -118.2437 |      100 |    60 | North     | 12345678
      2024-02-06 12:15:00+00:00 |  40.7128 |   -74.006 |      150 |    55 | East      | 23456789
      2024-02-06 12:30:00+00:00 |  51.5074 |   -0.1278 |       80 |    70 | West      | 34567890
    (3 rows)
    
  • 查询数据。

    PREPARE p3 AS SELECT * FROM vehicle_gps_track WHERE imei=$1;
    PREPARE
    
    EXECUTE p3(12345678);
                time            | latitude | longitude | altitude | speed | direction |   imei
    ----------------------------+----------+-----------+----------+-------+-----------+-----------
      2024-02-06 12:00:00+00:00 |  34.0522 | -118.2437 |      100 |    60 | North     | 12345678
    
  • 删除数据。

    PREPARE p4 AS DELETE FROM vehicle_gps_track WHERE imei=$1;
    PREPARE
    
    EXECUTE p4(12345678);
    DELETE 1
    
    SELECT * FROM vehicle_gps_track;
                time            | latitude | longitude | altitude | speed | direction |   imei
    ----------------------------+----------+-----------+----------+-------+-----------+-----------
      2024-02-06 12:15:00+00:00 |  40.7128 |   -74.006 |      150 |    55 | East      | 23456789
      2024-02-06 12:30:00+00:00 |  51.5074 |   -0.1278 |       80 |    70 | West      | 34567890
    (2 rows)