在ORACLE 12C支持在sql语句中编写函数,用来实现sql语句操作需要使用函数的部分功能,该功能对于你不想在数据库中新建函数 or 你的库是read only模式下要使用新函数实现某种功能,可以通过这种方法实现,增加了ORACLE数据库灵活点
SQL> select * from v$version;
BANNER CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production 0
PL/SQL Release 12.1.0.1.0 - Production 0
CORE 12.1.0.1.0 Production 0
TNS for Linux: Version 12.1.0.1.0 - Production 0
NLSRTL Version 12.1.0.1.0 - Production 0
测试过程创建一个简单函数,用来判断输入数据值是否是数字,如果是数字输出Y,如果不是输出N.
如果是12C以前的数据库,需要事先创建一个函数,然后通过select语句条用;但是在12C中直接通过一条select语句解决
SQL> with function Is_Number
2 (x in varchar2) return varchar2 is
3 Plsql_Num_Error exception;
4 pragma exception_init(Plsql_Num_Error, -06502);
5 begin
6 if (To_Number(x) is NOT null) then
7 return 'Y';
8 else
9 return '';
10 end if;
11 exception
12 when Plsql_Num_Error then
13 return 'N';
14 end Is_Number;
15 select is_number('www.xifenfei.com') is_num from dual;
16 /
IS_NUM
--------------------------------------------------------------------------------
N