4
select banner
from v$version
;
BANNER
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
PL/SQL Release 12.1.0.2.0 - Production
"CORE 12.1.0.2.0 Production"
TNS for Solaris: Version 12.1.0.2.0 - Production
NLSRTL Version 12.1.0.2.0 - Production
凭借其12C释放多种功能,甲骨文已经直接在SQL语句的上部加入的功能,允许的PL/SQL函数的声明(见https://oracle-base.com/articles/12c/with-clause-enhancements-12cr1)甲骨文12C:在SELECT语句的WITH子句
这可以是一个非常方便的功能,尤其是,在需要从数据库中提取数据的项目中,用户权限限于SELECT语句。
一个简单的例子:
with
function add_string(p_string in varchar2) return varchar2
is
--Function to add a string
l_buffer varchar2(32767);
begin
l_buffer := p_string || ' works!';
--
return l_buffer;
--
end ;
--
select add_string('Yes, it') as outVal
from dual
;
---------
OUTVAL
Yes, it works!
不过,我还没有能够包括多个功能在WITH子句:
with
function add_string(p_string in varchar2) return varchar2
is
--Function to add a string
l_buffer varchar2(32767);
begin
l_buffer := p_string || ' works!';
--
return l_buffer;
--
end ;
--
, function doesnt_it(p_string in varchar2) return varchar2
is
l_buffer varchar2(32767);
begin
l_buffer := p_string || ' Doesnt it?';
--
return l_buffer;
--
end ;
--
select add_string('Yes, it') as outVal
from dual
;
抛出ORA-00928: missing SELECT keyword
。 有没有人知道这个新功能是否允许使用多个函数声明,如果有的话,它们是如何实现的?
这么简单!非常感谢! :) – silentsurfer
不客气。 – abarisone