准备的语句
在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