在SQL中,预准备语句用于模拟类似查询或更新。 Adobe Experience Platform Query Service 通过使用参数化查询支持已准备的语句。 这可以优化性能,因为您不再需要重复重新解析查询。
使用准备语句时,支持以下语法:
此SQL查询将书写的SELECT查询保存为,其名称为 PLAN_NAME
. 您可以使用变量,例如 $1
代替实际值。 准备好的语句将在当前会话期间保存。 请注意,计划名称为 not 区分大小写。
PREPARE {PLAN_NAME} AS {SELECT_QUERY}
PREPARE test AS SELECT * FROM table WHERE country = $1 AND city = $2;
此SQL查询使用之前创建的准备语句。
EXECUTE {PLAN_NAME}('{PARAMETERS}')
EXECUTE test('canada', 'vancouver');
此SQL查询用于删除命名的prepared语句。
DEALLOCATE {PLAN_NAME}
DEALLOCATE test;
最初,您可以使用SQL查询,如下面的查询:
SELECT * FROM table WHERE id >= 10000 AND id <= 10005;
上述SQL查询将返回以下响应:
id | 名字 | lastname | 出生日期 | 电子邮件 | city | 国家 |
---|---|---|---|---|---|---|
10000 | 亚历山大 | 戴维斯 | 1993-09-15 | example@example.com | 温哥华 | 加拿大 |
10001 | 安托万 | 杜布瓦 | 1967-03-14 | example2@example.com | 巴黎 | 法国 |
10002 | 京子 | 樱花 | 1999-11-26 | example3@example.com | 东京 | 日本 |
10003 | 林 | 佩特松 | 1982-06-03 | example4@example.com | 斯德哥尔摩 | 瑞典 |
10004 | aasir | 怀塔卡 | 1976-12-17 | example5@example.com | 内罗毕 | 肯尼亚 |
10005 | 费尔南德 | rios | 2002-07-30 | example6@example.com | 圣地亚哥 | 智利 |
可以使用以下准备语句对此SQL查询进行参数化:
PREPARE getIdRange AS SELECT * FROM table WHERE id >= $1 AND id <= $2;
现在,可以使用以下调用执行准备的语句:
EXECUTE getIdRange(10000, 10005);
调用此函数时,您将看到与之前完全相同的结果:
id | 名字 | lastname | 出生日期 | 电子邮件 | 城市 | 国家 |
---|---|---|---|---|---|---|
10000 | 亚历山大 | 戴维斯 | 1993-09-15 | example@example.com | 温哥华 | 加拿大 |
10001 | 安托万 | 杜布瓦 | 1967-03-14 | example2@example.com | 巴黎 | 法国 |
10002 | 京子 | 樱花 | 1999-11-26 | example3@example.com | 东京 | 日本 |
10003 | 林 | 佩特松 | 1982-06-03 | example4@example.com | 斯德哥尔摩 | 瑞典 |
10004 | aasir | 怀塔卡 | 1976-12-17 | example5@example.com | 内罗毕 | 肯尼亚 |
10005 | 费尔南德 | rios | 2002-07-30 | example6@example.com | 圣地亚哥 | 智利 |
使用完准备语句后,您可以使用以下调用取消分配该语句:
DEALLOCATE getIdRange;