准备的语句

在SQL中,预准备语句用于模板化类似的查询或更新。 Adobe Experience Platform Query Service通过使用参数化查询支持预准备语句。 这可以优化性能,因为您不再需要重复地重新分析查询。

使用预准备语句

使用预准备语句时,支持以下语法:

准备准备准备的语句 prepare

此SQL查询保存名为PLAN_NAME的已写入SELECT查询。 您可以使用变量(如$1代替实际值)。 此准备好的语句将在当前会话期间保存。 请注意,计划名称​ 不区分大小写

SQL格式

PREPARE {PLAN_NAME} AS {SELECT_QUERY}

示例SQL

PREPARE test AS SELECT * FROM table WHERE country = $1 AND city = $2;

执行预准备语句 execute

此SQL查询使用以前创建的预准备语句。

SQL格式

EXECUTE {PLAN_NAME}('{PARAMETERS}')

示例SQL

EXECUTE test('canada', 'vancouver');

取消分配预准备语句 deallocate

此SQL查询用于删除命名的预准备语句。

SQL格式

DEALLOCATE {PLAN_NAME}

示例SQL

DEALLOCATE test;

使用预准备语句的示例流程

最初,您可以有一个SQL查询,如以下查询:

SELECT * FROM table WHERE id >= 10000 AND id <= 10005;

上述SQL查询将返回以下响应:

ID
名字
姓氏
出生日期
电子邮件
城市
国家/地区
10000
亚历山大
戴维斯
1993-09-15
example@example.com
温哥华
加拿大
10001
安东尼
杜布瓦
1967-03-14
example2@example.com
巴黎
法国
10002
恭子
樱花
1999-11-26
example3@example.com
东京
日本
10003
linus
彼得松
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
名字
姓氏
出生日期
电子邮件
城市
国家/地区
10000
亚历山大
戴维斯
1993-09-15
example@example.com
温哥华
加拿大
10001
安东尼
杜布瓦
1967-03-14
example2@example.com
巴黎
法国
10002
恭子
樱花
1999-11-26
example3@example.com
东京
日本
10003
linus
彼得松
1982-06-03
example4@example.com
斯德哥尔摩
瑞典
10004
aasir
韦塔卡
1976-12-17
example5@example.com
内罗毕
肯尼亚
10005
费尔南多
rios
2002-07-30
example6@example.com
圣地亚哥
智利

使用完预准备语句后,可以使用以下调用取消分配该语句:

DEALLOCATE getIdRange;
recommendation-more-help
ccf2b369-4031-483f-af63-a93b5ae5e3fb