其他
Oracle 20c 新特性详解:SQL Macro 宏 SCALAR / TABLE 模式带来的敏捷和便利
墨墨导读:在 Oracle 20c 中,SQL的宏支持 - SQL Macro 为 SQL 开发带来了进一步的敏捷和便利,在这篇文章中,我们来详细了解一下 SQL Macro 的特性用法。
return varchar2 SQL_MACRO(SCALAR) is
begin
return ‘least(greatest(x, lo), hi)’;
end;
/
ename,
CLIP (:lower, sal, :upper)
FROM emp;
ename,
least(greatest(sal, :lower), :upper)
FROM emp;
RETURN varchar2 SQL_MACRO(TABLE)
IS BEGIN
RETURN q’[
SELECT
d.deptno,
SUM(e.sal) budget, ANY_VALUE(d.dname) department, count(e.empno) headcount, count(e.mgr) mgr_headcount
FROM emp e, dept d
WHERE d.deptno = :dept_no
AND e.deptno = d.deptno
GROUP BY d.deptno]’;
end BUDGET;
/
RETURN VARCHAR2 SQL_MACRO(TABLE) AS
BEGIN
RETURN q’[SELECT *
FROM t
WHERE dbms_random.value<=sample.pct/100]’;
END sample;
/
FROM sample(t=>sh.sales, pct=>15);
function RANGE(stop number)
return varchar2 SQL_MACRO(TABLE);
function RANGE(first number default 0, stop number, step number default 1)
return varchar2 SQL_MACRO(Table);
end GEN;
/
create or replace package body GEN is
function RANGE(stop number)
return varchar2 SQL_MACRO(TABLE) is
begin
return q’{
select * from (select level-1 n from dual connect by level<=stop) where stop>0 }’;
end;
function RANGE(first number default 0, stop number, step number default 1)
return varchar2 SQL_MACRO(TABLE) is
begin
return q’{
select first+n*step n from gen.range(round((stop-first)/nullif(step,0))) }’;
end;
end GEN;
/
出处:墨天轮(https://www.modb.pro/db/7280,复制到网页中打开或者点击“阅读原文”)
扩展阅读
数据和云
ID:OraNews
如有收获,请划至底部,点击“在看”,谢谢!
资源下载
关注公众号:数据和云(OraNews)回复关键字获取
help,30万+下载的完整菜单栏
2019DTCC,数据库大会PPT
2018DTCC , 数据库大会PPT
2018DTC,2018 DTC 大会 PPT
ENMOBK,《Oracle性能优化与诊断案例》
DBALIFE,“DBA 的一天”海报
DBA04,DBA 手记4 电子书
122ARCH,Oracle 12.2体系结构图
2018OOW,Oracle OpenWorld 资料
云和恩墨BethuneX 企业版,集监控、巡检、安全于一身,你的专属数据库实时监控和智能巡检平台,漂亮的不像实力派,你值得拥有!
云和恩墨zData一体机现已发布超融合版本和精简版,支持各种简化场景部署,零数据丢失备份一体机ZDBM也已发布,欢迎关注。
云和恩墨大讲堂 | 一个分享交流的地方
长按,识别二维码,加入万人交流社群
请备注:云和恩墨大讲堂